web-dev-qa-db-fra.com

Comment configurer log4net pour que log.IsDebugEnabled soit à true?

J'essaie d'utiliser log4net dans une application ASP.NET avec Visual Studio 2005. J'ai déclaré une instance de l'enregistreur de la manière suivante:

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

J'essaie 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 ne pouvoir consigner que les messages de débogage?

28
Ryan Taylor

Avant d'appeler LogManager.GetLogger ("")

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

43
Anson Smith

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

[Assembly: XmlConfigurator(Watch = true)]

et si vous utilisez le fichier log4net.config, utilisez-le comme cela à la place:

[Assembly: log4net.Config.XmlConfigurator(ConfigFile = "log4net.config", Watch = true)]
25
Tim Scott

Si vous utilisez un fichier de configuration distinct pour log4net, procédez comme suit: après avoir suivi toutes les autres instructions de configuration, assurez-vous de cliquer avec le bouton droit sur le fichier dans Visual Studio Solution Explorer, sélectionnez Propriétés, développez le groupe d'options "Avancé", définissez la valeur "Copier dans le répertoire de sortie" comme "Copier toujours". Cela fera la magie ... :) à la vôtre !!

9
Anantha

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

2
Protector one

VB.NET - 

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

Utilisez ceci dans n’importe quelle méthode avant d’utiliser log:

log4net.Config.XmlConfigurator.Configure ();

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

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