2008-10-20 11 views
26

Je suis en train d'utiliser log4net dans une application ASP.NET avec Visual Studio 2005. Je l'ai déclaré une instance de l'enregistreur comme ceci:Comment configurer log4net pour que log.IsDebugEnabled soit true?

Private Shared ReadOnly log As ILog = LogManager.GetLogger("") 

Je suis en train de l'utiliser de la manière suivante:

If log.IsDebugEnabled Then 
    log.Debug("Integration Services Constructed") 
End If 

Voici ma configuration:

<log4net> 

    <root> 
     <level value="DEBUG" /> 
     <appender-ref ref="RollingFileAppender" /> 
    </root> 

    <appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender"> 
     <file value="..\\logs\\logfile.log"/> 
     <appendToFile value="true"/> 
     <rollingStyle value="Size"/> 
     <maxSizeRollBackups value="10"/> 
     <maximumFileSize value="1MB"/> 
     <staticLogFileName value="true"/> 
     <layout type="log4net.Layout.PatternLayout"> 
      <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline"/> 
     </layout> 
     <filter type="log4net.Filter.LevelRangeFilter"> 
      <param name="LevelMin" value="DEBUG" /> 
      <param name="LevelMax" value="FATAL" /> 
     </filter> 
    </appender> 

</log4net> 

Malheureusement, log.IsDebugEnabled est toujours faux.
Comment configurer log4net pour pouvoir uniquement consigner des messages de débogage?

Répondre

42

Avant d'appeler LogManager.GetLogger ("")

Vous devez appeler log4net.Config.XmlConfigurator.Configure(); Dans une application ASP.NET, vous voulez probablement mettre cet appel dans Application_Start

24

Oui, faites comme Anson dit. En outre, si vous appelez Configurer dans une bibliothèque de classes que vous pouvez le faire en ajoutant un attribut à votre classe:

[assembly: XmlConfigurator(Watch = true)] 

et si vous utilisez le fichier log4net.config, utilisez comme ça à la place:

[assembly: log4net.Config.XmlConfigurator(ConfigFile = "log4net.config", Watch = true)] 
8

Si vous utilisez un fichier de configuration séparé pour log4net, faites ceci: après avoir suivi toutes les autres instructions d'installation, assurez-vous que vous faites un clic droit sur le fichier dans l'explorateur de solution Visual Studio, sélectionnez Propriétés, développez le groupe d'options Avancé , définissez la valeur "Copier dans le répertoire de sortie" sur "Copier toujours". Cela fera la magie ... :) acclamations !!

0

utiliser dans toute méthode avant d'utiliser log:

log4net.Config.XmlConfigurator.Configure();

En App.Config, les paramètres doivent être:

<root> 
     <level value="ALL" /> 
     <appender-ref ref="AppenderName" /> 
    </root> 
1

VB.NET -

<Assembly: log4net.Config.XmlConfigurator(Watch:=True)> 
2

Si vous configurez log4net dans le code plutôt que dans un fichier de configuration, vous pouvez appeler log4net.Config.BasicConfigurator.Configure avant GetLogger.

Questions connexes