Ich weiß, es gibt viele Artikel über das Loggen mit Log4Net. Image may be NSFW.
Clik here to view.
Trotzdem werde ich anhand eines Beispiels das Loggen mit Log4Net zeigen.
Als erstes schauen wir uns die Konfigurations-Datei an.
1: <?xml version="1.0" encoding="utf-8" ?>
2: <configuration>
3:
4: <configSections>
5: <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
6: </configSections>
7:
8: <log4net>
9: <appender name="FileAppender" type="log4net.Appender.RollingFileAppender">
10: <file value="log\log-file" />
11: <appendToFile value="true" />
12: <rollingStyle value="Date" />
13: <datePattern value="yyyyMMdd" />
14:
15: <layout type="log4net.Layout.PatternLayout">
16: <conversionPattern value="%date [%thread] %-5level %logger [%property{Session}] - %message%newline" />
17: </layout>
18: </appender>
19:
20: <root>
21: <level value="ALL" />
22: <appender-ref ref="FileAppender" />
23: </root>
24: </log4net>
25:
26: </configuration>
Appender:
Ich verwende hier den RollingFileAppender, dieser kann nach Größe und Datum eingeschränkt werden. Ist die Größe erreicht bzw. hat sich das Datum geändert, wird eine neue Log-Datei angelegt. In dem Beispiel werden die Log-Files in einem Unterverzeichnis log
[file value=log\log-file] im Programmverzeichnis abgelegt. Mit rollingStyle lege ich fest wann eine neue Datei erstellt werden soll. Hier wird jeden Tag eine Log-File erstellt. Festgelegt wird das mit dem datePattern.
Weitere Appender sind hier nachschlagbar.
Layout:
Für das Layout verwende ich das Patternlayout, ein flexibles konfigurierbares Layout. Weitere Layouts gibt es hier.
Unter conversationPattern kann die Ausgabe definiert werden. Welche Möglichkeiten für die Ausgabe vorhanden sind, findet man hier.
Im letzten Abschnitt wird bestimmt wie und was geloggt werden soll. Folgende Level-Stufen sind verfügbar:
– Off
– Fatal
– Error
– Warn
– Info
– Debug
– All
Mit appender-ref wird der oben definierte Appender verwendet. Es können natürlich mehrere Appender definiert werden.
Verwendung im Code:
1: static void Main()
2: {
3: log4net.Config.XmlConfigurator.Configure(new FileInfo("logging.config"));
4: ILog logger = LogManager.GetLogger(typeof(Program));
5:
6: logger.Info("Info");
7: logger.Debug("Debug");
8: logger.Error("Error");
9: logger.Fatal("Fatal");
10: logger.Warn("Warn");
11: }
In der dritten Zeile wird log4net konfiguriert, hierfür geben wir die Config-Datei an. Eine Zeile weiter wird der Logger geholt. Für jedes Level gibt es eine Methode.
Level:
Vielleicht sollte noch die Hierarchie verschiedener Levels erwähnt werden.
Info
1: 2009-10-11 18:36:32,305 [10] INFO WindowsFormsApplication1.Program [(null)] - Info
2: 2009-10-11 18:36:32,339 [10] ERROR WindowsFormsApplication1.Program [(null)] - Error
3: 2009-10-11 18:36:32,340 [10] FATAL WindowsFormsApplication1.Program [(null)] - Fatal
4: 2009-10-11 18:36:32,340 [10] WARN WindowsFormsApplication1.Program [(null)] - Warn
Debug
1: 2009-10-11 18:37:23,195 [9] INFO WindowsFormsApplication1.Program [(null)] - Info
2: 2009-10-11 18:37:23,228 [9] DEBUG WindowsFormsApplication1.Program [(null)] - Debug
3: 2009-10-11 18:37:23,228 [9] ERROR WindowsFormsApplication1.Program [(null)] - Error
4: 2009-10-11 18:37:23,228 [9] FATAL WindowsFormsApplication1.Program [(null)] - Fatal
5: 2009-10-11 18:37:23,228 [9] WARN WindowsFormsApplication1.Program [(null)] - Warn
Error
1: 2009-10-11 18:37:44,140 [9] ERROR WindowsFormsApplication1.Program [(null)] - Error
2: 2009-10-11 18:37:44,173 [9] FATAL WindowsFormsApplication1.Program [(null)] - Fatal
Anhand der Beispiele kann man erkennen, dass nicht nur das eingestellt Level geloggt, sondern hierarchisch vorgegangen wird.
Fazit:
Log4Net ist einfach und schnell einzusetzen. Durch die riesige Auswahl an Möglichkeiten des Loggings ist sicherlich für jeden was dabei.
Viel Spaß beim Loggen! Image may be NSFW.
Clik here to view.