Archive for Oktober, 2009

Interessantes Wochenende beendet

Freitag, Oktober 23rd, 2009

.NET Open Space vom 17.10. bis 18.10.2009 in Leipzig

Das 2. .Net Open Space in Leipzig ist vorbei. Es gab wieder einige interessante Diskussionen auch neben den einzelnen Sessions.
Unheimlich interessant waren die unterschiedlichen Meinungen zum EF von Microsoft.

Durch die Session “Die Attraktivität des Berufes als Softwareentwickler steigern” – eingeleitet von Ralf Westphal – wurde mir erst jetzt bewusst wie schlecht es eigentlich um die Quantität des Softwareentwicklers steht.

Sicherlich gibt es noch wesentlich mehr zu den einzelnen Sessions zu erzählen, aber mir fällt insgesamt nur Ausdruck für die gelungene Veranstaltung ein: EINFACH GENIAL!

Ich freu mich schon wieder auf nächstes Jahr – oder evtl. doch nach Wien? Man wird sehen. :-)

Einen besonderen Dank gilt den Organisatoren Torsten Weber, Alexander Groß, Stefan Lieser und Marcel Hoyer.

Logging mit Log4Net

Sonntag, Oktober 11th, 2009

Ich weiß, es gibt viele Artikel über das Loggen mit Log4Net. :-)
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="loglog-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! :-)