Domanda

Sto cercando di utilizzare log4net in un'applicazione ASP.NET con Visual Studio 2005. Ho dichiarato un'istanza del logger in questo modo:

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

Sto cercando di usarlo nel modo seguente:

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

Ecco la mia configurazione:

<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>

Sfortunatamente, log.IsDebugEnabled è sempre falso.
Come posso configurare log4net in modo da poter registrare solo i messaggi di debug?

È stato utile?

Soluzione

Prima di chiamare LogManager.GetLogger (" ")

Devi chiamare log4net.Config.XmlConfigurator.Configure (); In un'app ASP.NET probabilmente desideri inserire questa chiamata in Application_Start

Altri suggerimenti

Sì, fallo come ha detto Anson. Inoltre, se stai chiamando Configura in una libreria di classi, puoi farlo aggiungendo un attributo alla tua classe:

[assembly: XmlConfigurator(Watch = true)]

e se stai usando il file log4net.config , usalo così:

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

Se si utilizza un file di configurazione separato per log4net, procedere come segue: dopo aver seguito tutte le altre istruzioni di installazione, assicurarsi di fare clic con il pulsante destro del mouse sul file in Esplora soluzioni di Visual Studio, selezionare le proprietà, espandere " Avanzate " gruppo di opzioni, imposta " Copia nella directory di output " valore come " Copia sempre " ;. Questo farà la magia ... :) evviva !!

Se si imposta log4net nel codice anziché in un file di configurazione, è possibile chiamare log4net.Config.BasicConfigurator.Configure prima di GetLogger .

VB.NET -

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

Utilizzare questo in qualsiasi metodo prima di utilizzare il registro:

log4net.Config.XmlConfigurator.Configure ();

In App.Config, le impostazioni dovrebbero essere:

<root>
      <level value="ALL" />
      <appender-ref ref="AppenderName" />
    </root>
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top