Serilog für C# (.NET): Vollständige Anleitung mit Beispielen

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

Einführung in Serilog: Was es ist und warum man es braucht

\n\n

Serilog ist eine leistungsstarke, flexible und moderne Bibliothek für strukturiertes Logging im .NET-Ökosystem (C#, F#, VB.NET). Im Gegensatz zu klassischen Logging-Frameworks (z. B. NLog oder log4net), die mit flachen Textnachrichten arbeiten, wurde Serilog von Grund auf für die Arbeit mit strukturierten Daten konzipiert.

\n\n

Warum braucht man Serilog?

\n
    \n
  • Strukturiertes Logging: Sie loggen nicht nur einen String, sondern Objekte mit benannten Eigenschaften. Dies ermöglicht eine effiziente Filterung, Suche und Analyse von Logs in Systemen wie Elasticsearch, Seq, Datadog.
  • \n
  • Flexibilität (Sinks): Serilog verwendet das Konzept der "Senken" (sinks). Sie können Logs an die Konsole, eine Datei, eine Datenbank, Cloud-Dienste (Azure, AWS), Elasticsearch, Telegram, Slack und hunderte andere Orte senden – einfach durch Hinzufügen des entsprechenden Pakets.
  • \n
  • Leistung: Serilog ist für hochlastige Anwendungen optimiert. Es verwendet verzögerte String-Formatierung (message templates), um unnötige Speicherzuweisungen zu vermeiden, wenn die Logging-Stufe nicht aktiv ist.
  • \n
  • Einfache Konfiguration: Konfiguration über Code oder JSON-Datei. Der minimale Code für den Start beträgt nur wenige Zeilen.
  • \n
  • Diagnose: Ermöglicht das einfache Hinzufügen von Kontextinformationen (z. B. Benutzer-ID, Bestellnummer, Methodenname) zu jedem Log.
  • \n
\n\n

Installation von Serilog

\n\n

Serilog wird über NuGet – den Paketmanager für .NET – verbreitet. Die Installation erfolgt über die Paket-Manager-Konsole (Package Manager Console) oder die .NET CLI.

\n\n

Installation über die .NET CLI (empfohlen):

\n
dotnet add package Serilog\ndotnet add package Serilog.Sinks.Console\ndotnet add package Serilog.Sinks.File\ndotnet add package Serilog.Settings.Configuration\ndotnet add package Serilog.AspNetCore
\n\n

Installation über die Paket-Manager-Konsole (Visual Studio):

\n
Install-Package Serilog\nInstall-Package Serilog.Sinks.Console\nInstall-Package Serilog.Sinks.File\nInstall-Package Serilog.Settings.Configuration\nInstall-Package Serilog.AspNetCore
\n\n

Erklärung der Pakete:

\n
    \n
  • Serilog – der Kern der Bibliothek.
  • \n
  • Serilog.Sinks.Console – Senke für die Ausgabe in die Konsole.
  • \n
  • Serilog.Sinks.File – Senke zum Schreiben in Dateien.
  • \n
  • Serilog.Settings.Configuration – ermöglicht das Lesen von Einstellungen aus appsettings.json.
  • \n
  • Serilog.AspNetCore – Integration mit ASP.NET Core (fügt HTTP-Kontext zu Logs hinzu).
  • \n
\n\n

Hinweis für PythonLib-Leser: In Python wäre das Äquivalent zur Installation über pip pip install serilog (aber Serilog ist eine .NET-Bibliothek, für Python gibt es eigene Werkzeuge, z. B. structlog).

\n\n

Schnellstart: Erster Log in 30 Sekunden

\n\n

Erstellen Sie eine .NET-Konsolenanwendung und fügen Sie den folgenden Code in Program.cs ein:

\n\n
using Serilog;\n\n// 1. Serilog konfigurieren\nLog.Logger = new LoggerConfiguration()\n    .MinimumLevel.Debug()\n    .WriteTo.Console()\n    .WriteTo.File("logs/myapp.log", rollingInterval: RollingInterval.Day)\n    .CreateLogger();\n\ntry\n{\n    Log.Information("Anwendung erfolgreich gestartet.");\n\n    int userId = 42;\n    string userName = "Alice";\n    Log.Information("Benutzer {UserId} mit Namen {UserName} hat sich angemeldet.", userId, userName);\n\n    // Beispiel mit Fehler\n    try\n    {\n        throw new InvalidOperationException("Ungültige Operation");\n    }\n    catch (Exception ex)\n    {\n        Log.Error(ex, "Fehler bei der Ausführung der Operation für Benutzer {UserId}", userId);\n    }\n\n    Log.Warning("Dies ist eine Warnung. Stufe: {Leve                    

Empfehlungen