Wie konfiguriere ich log4net, so dass log.IsDebugEnabled wahr ist?
-
03-07-2019 - |
Frage
Ich versuche, log4net in einer ASP.NET-Anwendung mit Visual Studio zu verwenden, 2005. Ich habe eine Instanz des Loggers erklärt wie folgt:
Private Shared ReadOnly log As ILog = LogManager.GetLogger("")
Ich versuche es auf 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 kann ich log4net konfigurieren, so dass ich nur Debug-Log-Meldungen können?
Lösung
Vor LogManager.GetLogger Aufruf ( "")
Sie müssen rufen log4net.Config.XmlConfigurator.Configure (); In einer ASP.NET-Anwendung sollten Sie diesen Anruf in Application_Start setzen
Andere Tipps
Ja, tun Sie es wie Anson sagte. Auch, wenn Sie konfigurieren in einer Klassenbibliothek rufen Sie können 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)]
Wenn Sie eine separate Konfigurationsdatei für log4net verwenden, dies zu tun: nach folgenden alle anderen Setup-Anweisungen, stellen Sie sicher, dass u rechts auf die Datei klicken Sie in der Visual Studio-Lösung Explorer, wählen Sie Eigenschaften, erweitern Sie den Eintrag „Erweitert“ Gruppe, setzen Sie den Wert als „immer kopieren“ „To Ausgabeverzeichnis kopieren“. Das wird die Magie tun ... :) Prost !!
Wenn Sie log4net setzen eher in Code auf als in einer Konfigurationsdatei, können Sie log4net.Config.BasicConfigurator.Configure
vor GetLogger
nennen.
VB.NET -
<Assembly: log4net.Config.XmlConfigurator(Watch:=True)>
Verwenden Sie diese in einem beliebigen Verfahren, bevor Sie sich verwenden:
log4net.Config.XmlConfigurator.Configure ();
In App.Config sollten die Einstellungen sein:
<root>
<level value="ALL" />
<appender-ref ref="AppenderName" />
</root>