2009-11-16 12 views
10

Quelqu'un peut-il suggérer comment configurer le log4net pour une application de console?Configuration log4net pour l'application console

Ou au moins comment/où attraper l'événement Application_Start? (Il semble que certains appels sont requis en ce moment)

Merci d'avance!

Répondre

10

Vous devez le configurer avant l'instanciation du premier enregistreur.

Pour ce faire:

  • Votre classe principale (Program.cs) ne devrait pas avoir un enregistreur

  • La principale méthode ne doit pas faire référence à toutes les classes qui ont un enregistreur.

  • Vous pouvez ensuite configurer log4net dans la méthode principale.

vous pouvez également utiliser une classe wrapper pour instancier enregistreurs, qui assure log4net est configuré avant de créer un enregistreur, par exemple:

static class Log4NetHelper 
{ 
    private static bool _isConfigured; 

    static void EnsureConfigured() 
    { 
     if (!_isConfigured) 
     { 
      ... configure log4net here ... 
      _isConfigured = true; 
     } 
    } 

    public static ILog GetLogger(string name) 
    { 
     EnsureConfigured(); 
     log4net.ILog logger = log4net.LogManager.GetLogger(name); 
     return logger; 
    } 
} 
13

Essayez d'écrire

[assembly: log4net.Config.XmlConfigurator(Watch = true)] 

dans AssemblyInfo.cs

C'est tout!

+0

Qu'est-ce que c'est censé faire? Je ne semble rien aider dans mon cas. –

+0

Il est supposé 1) dire à log4net de se configurer en utilisant les paramètres par défaut (app.config) 2) que log4net recharge automatiquement sa configuration lorsque le fichier sous-jacent qui contient l'entrée log4net change. –

+0

Ajouter cette ligne fonctionne pour moi. À votre santé! – ysrb