Loggen mit log4net

Der Quasi-Standard zum loggen von Messages in dotNet Applikationen ist log4net, das Pendant zu log4j unter Java.

Dies ist eine Schritt-für-Schritt Anleitung zur Konfiguration und die ersten Schritte.

Download

Die benötigten Dateien kann man auf der log4net Seite herunterladen

Konfiguration

Abhängig davon, ob es sich um eine Applikation oder um eine Webanwendung handelt, ist die Konfiguration ein wenig anders. Auf die Unterschiede wird eingegangen.

Einbindung Binaries

Nach dem entpacken der ZIP Datei wird nur eine Datei benötigt. Relativ zum entpackten Ordner wird die Datei „bin/net/2.0/release/log4net.dll“ benötigt.

Diese kann grundsätzlich irgendwo auf dem System liegen. Damit die Applikation aber auch portabel auf verschiedenen Computern weiterentwickelt werden kann, wird die dll am besten in den Bin Ordner der Applikation verschoben.

Danach muss im Visual Studio der Verweis auf die dll über „Verweis hinzufügen → Durchsuchen“ erstellt werden.

Konfiguration

Hier ist der erste Unterschied. Bei einer Webapplikation findet die Konfiguration in der Web.config Datei statt, bei einer Windows-Anwendung in der App.config.

Das folgende Beispiel zeigt die einfachste aller Konfigurationen auf:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>  
	<configSections>  
		<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />  
	</configSections>  
	<log4net debug="false">  
		<appender name="LogFileAppender" type="log4net.Appender.FileAppender,log4net">  
			<param name="File" value="C:\error-log.txt" />  
			<param name="AppendToFile" value="true" />  
			<layout type="log4net.Layout.PatternLayout,log4net">  
				<param name="ConversionPattern" value="%d %-5p %c %m%n" />  
			</layout>  
		</appender>  
		<root>  
			<priority value="ALL" />  
			<appender-ref ref="LogFileAppender" />  
		</root>  
	</log4net>  
</configuration> 

Diese Konfiguration ist so eingerichtet, dass sie direkt auf dem Laufwerk C: in die Datei error-log.txt loggt. Dies für alle Fehlerstufen (Siehe weiter unten.).

Relevant ist hier der XML-Knoten <section />, welcher zwingend im Bereich <configSections /> liegen muss, und der XML-Knoten <log4net />, welcher irgendwo innerhalb des <configuration /> Knoten eingefügt werden muss.

Initialisieren des Loggers

log4net muss beim Start der Applikation gestartet werden. Dies geschieht mit dem Befehl:

log4net.Config.XmlConfigurator.Configure();

Bei einer Windows Applikation geschieht dies in der Main Funktion der Applikation, bei einer Webanwendung am besten in der Datei „Global.asax“ in der Application_Start Methode. Falls die Datei nicht existiert, muss diese noch erstellt werden. Die besagte Methode sollte dann bereits vorhanden sein.

Nun sollte Log4net funktionieren.

Verwendung

Bei log4net gibt es verschiedene Loglevel, die verwendet werden können. Nachfolgend sind diese mit ihrer Bedeutung dargestellt:

Bedeutung
FATAL Schwerwiegende Fehler, von denen sich das System oder die Anwendung nicht erholen kann und beendet werden muss(„Unrecoverable Error“)
ERROR Fehlermeldungen, auf die der Operator oder Administrator reagieren muss
WARNING Meldungen, die vom Operator an die Softwareentwicklungsabteilung übermittelt werden müssen und dort analysiert werden müssen, die aber den Betrieb wahrscheinlich nicht beeinträchtigen
INFO Hinweise
DEBUG Meldungen zu Debug-Zwecken für Entwickler

Um einen Logeintrag zu generieren, muss zuerst der Logger initialisiert werden. Dies geschieht mit folgendem Befehl innerhalb einer Klasse oberhalb des Konstruktors:

private static readonly ILog log = LogManager.
    GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);

System.Reflection.MethodBase.GetCurrentMethod().DeclaringType bewirkt, dass für jede einzelne Klasse in der log4net Konfiguration ein anderer Logger verwendet werden kann. Dies erhöht die Flexibilität bei späteren Änderungen. Auch kann der Objektaufruf so per Copy-Paste weiterverwendet werden, ohne das man sich Gedanken dazu machen muss.

Nachfolgend wird anhand eines Debug Beispiels erklärt, wie der Logger funktioniert:

log.Debug("Dies ist eine Debugmeldung");

Falls alles korrekt integriert wurde, sollte sich nun unter C:\error-log.txt eine Datei mit der angegebenen Meldung als Inhalt befinden.

Problembehandlung

Wenn dem nicht so ist, muss die Konfiguration überprüft werden. Um herauszufinden, wo das Problem liegt, kann in der Konfiguration beim Knoten log4net der Parameter debug auf true gesetzt werden. Dies bewirkt, dass im Visual Studio per „Debuggen → Fenster → Ausgabe“ der Debug Output der Applikation ausgegeben werden kann.

Oft findet sich dort eine Meldung über das Problem. Erfahrungsgemäss hatte ich mal das Problem, dass die Assembly Referenz nicht gefunden werden konnte, obwohl der Verweis korrekt war. Der <section /> Knoten in der Konfiguration musste um weitere Parameter erweitert werden, welche im Debug Output genau angegeben wurden.

dotnet/loggen_mit_log4net.txt · Zuletzt geändert: 27.12.2013 19:46 (Externe Bearbeitung)
Nach oben
chimeric.de = chi`s home Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0