NLog für C# (.NET): Komplettanleitung mit Beispielen
Willkommen zur ausführlichen Anleitung für die NLog-Bibliothek auf der .NET-Plattform. NLog ist ein leistungsstarkes, flexibles und hochperformantes Logging-Framework, das sich zum De-facto-Standard für viele .NET-Projekte entwickelt hat. In diesem Artikel behandeln wir alles von der Installation bis zu fortgeschrittenen Techniken – mit echten Codebeispielen und Optimierungstipps.
1. Was ist NLog und warum braucht man es?
NLog (kurz für ".NET Logging") ist eine kostenlose Open-Source-Bibliothek für die .NET-Plattform, die flexibles und effizientes Logging ermöglicht. Entwickler können damit Diagnoseinformationen (Logs) an verschiedene Ziele senden: Dateien, Konsole, Datenbanken, Netzwerk-Sockets, Monitoring-Systeme (z. B. Seq, Elasticsearch, Sentry) und viele mehr.
Warum ist Logging wichtig? In der modernen Softwareentwicklung sind Logs der „Black Box“ einer Anwendung. Ohne sie lässt sich nicht nachvollziehen, warum ein Server abgestürzt ist, wo ein Fehler aufgetreten ist oder welche Daten zum Zeitpunkt des Fehlers verarbeitet wurden. NLog löst dieses Problem, indem es Folgendes bietet:
- Flexibles Routing: Unterschiedliche Log-Level (Trace, Debug, Info, Warn, Error, Fatal) können für verschiedene Teile der Anwendung konfiguriert werden.
- Leistung: Asynchrones Schreiben, verzögerte Initialisierung und minimale Auswirkungen auf die Geschwindigkeit.
- Erweiterbarkeit: Hunderte vorgefertigte Targets und die Möglichkeit, eigene zu schreiben.
- Konfiguration ohne Neukompilierung: Einstellungen können zur Laufzeit über XML, JSON oder Code geändert werden.
NLog eignet sich ideal für: Webanwendungen (ASP.NET Core), Konsolen-Tools, Microservices, Desktop-Anwendungen (WPF/WinForms) und Hintergrunddienste (Windows Services, Worker Services).
2. Installation
Die Installation von NLog erfolgt über den NuGet-Paketmanager. Führen Sie einen der folgenden Befehle in der Paketmanager-Konsole von Visual Studio oder im .NET CLI-Terminal aus:
// Über .NET CLI (empfohlen)
dotnet add package NLog
// Über Package Manager Console
Install-Package NLog
// Für ASP.NET Core wird zusätzlich die Integration empfohlen:
dotnet add package NLog.Web.AspNetCore
Nach der Installation müssen Sie eine Konfigurationsdatei nlog.config im Projektstamm erstellen (oder NLog programmatisch konfigurieren).
3. Schnellstart – Minimales funktionierendes Beispiel
Erstellen Sie eine Konsolenanwendung und fügen Sie die Datei nlog.config hinzu (Rechtsklick auf das Projekt → Hinzufügen → Neues Element → XML-Datei → nlog.config nennen). Fügen Sie folgenden Inhalt ein:
<?xml version="1.0" encoding="utf-8" ?>
<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<!-- Ziel: Wohin die Logs geschrieben werden -->
<targets>
<target name="console" xsi:type="Console" layout="${longdate} | ${level:uppercase=true} | ${message} ${exception:format=ToString}" />
<target name="file" xsi:type="File" fileName="${basedir}/logs/app-${shortdate}.log"
layout="${longdate} | ${level:uppercase=true} | ${logger} | ${message} ${exception:format=ToString}" />
</targets>
<!-- Routing-Regeln -->
<rules>
<logger name="*" minlevel="Debug" writeTo="console,file" />
</rules>
</nlog>
Jetzt schreiben wir den Code in Program.cs:
using NLog;
public class Program
{
// Logger für die aktuelle Klasse erstellen
private static readonly Logger Logger = LogManager.GetCurrentClassLogger();
public static void Main(string[] args)
{
Logger.Info("Anwendung gestartet");
try
{
var result = Divide(10, 0);
Logger.Debug($"Ergebnis: {result}");
}
catch (Exception ex)
{
Logger.Error(ex, "Fehler bei der Division aufgetreten");
}
Logger.Info("Anwendung beendet");
}
private static int Divide(int a, int b)
{
Logger.Debug($"Teile {a} durch {b}");
return a / b;
}
}
Nach dem Start sehen Sie die Logs sowohl in der Konsole als auch in der Datei logs/app-YYYY-MM-DD.log. Herzlichen Glückwunsch – Ihr erstes NLog-Setup läuft!