2008-10-20 3 views
26

Ich versuche log4net in einer ASP.NET-Anwendung mit Visual Studio 2005. Ich eine Instanz des Loggers habe zu verwenden, wie so erklärt:Wie konfiguriere ich log4net, so dass log.IsDebugEnabled true ist?

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

Ich versuche es auf die folgende Weise zu verwenden:

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

Hier ist meine Konfiguration:

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

Leider log.IsDebugEnabled ist immer falsch.
Wie konfiguriere ich log4net, so dass ich nur Debug-Meldungen protokollieren kann?

Antwort

42

Vor LogManager.GetLogger Aufruf ("")

Sie haben log4net.Config.XmlConfigurator.Configure zu nennen(); In einer ASP.NET App möchten Sie wahrscheinlich diesen Aufruf in Application_Start

24

Ja, tun Sie es wie Anson sagte. Auch, wenn Sie konfigurieren in einer Klassenbibliothek aufrufen können Sie das tun, indem Sie ein Attribut zu Ihrer Klasse hinzufügen:

[assembly: XmlConfigurator(Watch = true)] 

und wenn Sie log4net.config Datei verwenden, verwenden Sie es so, dass statt:

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

Wenn Sie eine separate Konfigurationsdatei für log4net verwenden, dies zu tun: nach allen anderen Setup-Anweisungen folgen, stellen Sie sicher, dass u rechts auf der Datei in der Visual Studio-Lösung Explorer, wählen Sie Eigenschaften klicken, erweitern Sie die „Advanced“ Optionsgruppe Setzen Sie den Wert "Copy To Output Directory" auf "Copy always". Das wird die Magie machen ... :) Prost !!

0

Verwenden Sie diese in jedem Verfahren, bevor Sie verwenden log:

log4net.Config.XmlConfigurator.Configure();

In App.Config sollten die Einstellungen sein:

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

VB.NET -

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

Wenn Sie in Code log4net, anstatt in einer Konfigurationsdatei einstellen, können Sie anrufen log4net.Config.BasicConfigurator.Configure vor GetLogger.