© best_vector/Shutterstock.com
Teil 3: Debug Logging im Detail

.NET Core 2.x Logging


.NET Core 2.x bietet eine Infrastruktur, um einfach und unkompliziert ein Debug Logging verwenden zu können. Dieser dritte und letzte Teil unserer kleinen Artikelserie stellt die Grundlagen dieser Infrastruktur vor, zeigt Möglichkeiten auf und demonstriert, wie dieses wichtige Feature in einer Anwendung zum Einsatz kommt.

Artikelserie

Teil 1: Konfiguration von .NET-Core-2.x-Anwendungen

Teil 2: Inversion of Control und Dependency Injection im Detail

Teil 3: Debug Logging im Detail

Jede halbwegs komplexe Anwendung sollte – nein, muss! – eine Möglichkeit haben, bei ihrer Ausführung entstehende Details in ein Log zu schreiben, um eine spätere Fehlersuche zu vereinfachen. Und da bilden .NET Core-2.x-Anwendungen natürlich keine Ausnahme.

Das Logging-System (NuGet-Pakete: Microsoft.Extensions.Logging und Microsoft.Extensions.Logging.Abstractions) zu verwenden, ist recht einfach. In der Konfigurationsphase beim Start wird als Erstes eine Instanz einer Klasse erzeugt, die die Microsoft.Extensions.Logging.ILoggerFactory-Schnittstelle implementiert. Für gewöhnlich ist das die Klasse Microsoft.Extensions.Logging.LoggerFactory. Dieser Factory-Klasse wird als Zweites angegeben, welcher Logging-Provider wie verwendet werden soll. Das geschieht über Erweiterungsmethoden, deren Namen per Konvention mit Add beginnen. Also zum Beispiel AddConsole(…), AddDebug(…) usw. Jeder dieser Logging-Provider hat genau ein Ziel, wie z. B. die Konsole oder den Debugger-Monitor etc., und wird nach .NET-Core-2.x-Manier in ein NuGet-Paket verpackt bereitgestellt. Eine kleine Übersicht zeigt Tabelle 1.

Logging-Provider

NuGet-Paket

Konsole

Microsoft.Extensions.Logging.Console

Debuggermonitor (Output Window)

Microsoft.Extensions.Logging.Debug

Trace-Listener (Output Window)

Microsoft.Extensions.Logging.TraceSource

Windows-Ereignisprotokoll

Microsoft.Extensions.Logging.EventLog

Event Source/Event Listener

Microsoft.Extensions.Logging.EventSource

Azure-App-Dienste „Diagnoseprotokolle“ und „Log Stream“

Microsoft.Extensions.Logging.AzureAppServices

Datei, Datenbank, SMTP etc.

Serilog.* // NLog.*

Tabelle 1: Unterstützte Logging-Provider

Wird nun einen Logger benötigt, kann dieser über die generische CreateLogger()-Methode der Factory-Klasse abgerufen werden. Oftmals geschieht dies mittels Dependency Injection, wie wir später noch sehen werden. Der Logger dient letztendlich zum Schreiben der gewünschten Loginformationen. Listing 1 zeigt das Vorgehen für die Provider für die Konsole und den Debug...

Neugierig geworden?

Angebote für Teams

Für Firmen haben wir individuelle Teamlizenzen. Wir erstellen Ihnen gerne ein passendes Angebot.

Das Library-Modell:
IP-Zugang

Das Company-Modell:
Domain-Zugang