Erste Schritte mit Serilog

Vorwort

Über Jahre hinweg war log4net das Framework wenn es darum ging in .Net Anwendungen Logging einzubinden. Auch wenn log4net schon seit längerer Zeit nicht mehr weiterentwickelt wird, ist es immer noch hervorragend und kann ohne weiteres auch mit aktuellen Version des .Net Frameworks mithalten.

Dennoch ist irgendwann einmal die Zeit gekommen, dass man sich auch andere Frameworks ansieht. Ein solches Framework ist serilog. Was mir besonders gut an dem Framework gefällt ist die Tatsache, dass serilog sowohl für .Net Framework als auch für .Net Core verfügbar ist. Somit kann man auch in .Net Core Projekten das gleiche Framework mit der gleichen Syntax verwenden. Darüber hinaus verfügt serilog, ähnlich wie log4net, über eine Menge von Logging Zielen.

Was bei log4net Appender sind, heißt bei serilog Sinks. Somit können je nach Anforderung verschiedene Arten von Sinks in einem Projekt eingebunden werden. Wie auch schon bei log4net, kann man hier in Textdateien loggen, in Datenbanken, oder sonst irgendwohin. Bei Textdateien gibt es auch wie log4net hier die Möglichkeit, dass die Dateien täglich oder ab einer bestimmten Größe rotieren.

Erster Kontakt

Um mit serilog loszulegen muss man zunächst das entsprechende Nuget-Package einbinden. Dazu also einfach mit

Install-Package Serilog

Das entsprechende Package einbinden. Für die einzelnen Sinks muss man dann jeweils auch noch die entsprechenden Packages einbinden. Für jedes Sink gibt es hier ein eigenes Package. In diesem Fall wollen wir also einmal auf die Konsole als auch in eine Datei loggen.

Install-Package Serilog.Sinks.Console 
Install-Package Serilog.Sinks.File

Anschließend kann im Code ein entsprechender Logger erstellt werden

Log.Logger = new LoggerConfiguration() 
    .MinimumLevel.Debug() 
    .WriteTo.Console(restrictedToMinimumLevel:LogEventLevel.Information) 
    .WriteTo.File("MyApplication.log") 
    .CreateLogger(); 

Nun kann man auf dem Logger Meldungen ausgeben

Log.Logger.Information("Start der Anwendung"); 
Log.Logger.Debug("Meine erste Debug-Meldung"); 

Wichtig ist hierbei zu beachten, dass man den Minimum-Level des Loggers definiert, denn der Default steht auf „Information“. Auch wenn man bei den einzelnen Sinks noch einen MinimumLevel mitgeben kann, so greift der Log-Level des Loggers zuerst.

In diesem Beispiel wird auf der Konsole nur die Information-Meldung ausgegeben, während im Logfile beide Meldung erfasst werden.

Als Loglevel stehen – wie bei solchen Komponenten – üblich folgende zur Auswahl:

  • Verbose
  • Debug
  • Information
  • Warning
  • Error
  • Fatal

Damit sollte man also ein einfaches Logging schnell hinbekommen.


Nach oben scrollen