Einführung
- Definition
Log4net = Log for .NET, es ist die offizielle Portierung von Apache Log4j (klassische Java‑Protokollbibliothek) für die .NET‑Plattform, eine ausgereifte Open‑Source‑Bibliothek zur Protokollierung. - Hauptfunktionen
Nach der Integration im Projekt müssen Sie keine Datei‑Lese‑ und Schreiblogik selbst entwickeln. Sie erhalten schnell Anwendungsprotokolle für Laufzeitinformationen und Ausnahmestapeln, was das Debuggen und die Fehlersuche im Produktivbetrieb erleichtert. - Zusammenhang der Begriffe
- Log4j: Bewährte Protokoll‑Komponente für das Java‑Ökosystem
- Log4net: Für C#/.NET angepasste Portierung von Log4j
Installation
Bei modernen .NET‑Projekten empfehlt sich die Installation über NuGet:
dotnet add package log4net
In Visual Studio können Sie im Dialogfeld „NuGet‑Pakete verwalten“ nach log4net suchen und es mit einem Klick installieren.
Früher wurde log4net hauptsächlich per manueller DLL‑Download eingebunden. Heutzutage ist NuGet die gängige Vorgehensweise.
Einrichtung der Log4Net‑Umgebung
log4net funktioniert in allen Projektarten: Konsolen‑, Desktop‑ und Webanwendungen.
Arbeitsablauf
Schritt 1: Web.config bearbeiten und log4net‑Konfiguration hinzufügen
<?xml version="1.0"?>
<configuration>
<configSections>
<!-- Registriere den log4net‑Konfigurationsabschnitt -->
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
</configSections>
<log4net>
<!-- Datei‑Appender mit datumsbasierter Protokollrotation -->
<appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
<!-- Speicherpfad für Protokolle: Nutze relative Pfade, vermeide fest kodierte absolute Pfade von USB‑Laufwerken -->
<param name="File" value="logs\\"/>
<!-- Anfügemodus: true = Protokolle ergänzen, false = Datei bei jedem Start leeren -->
<param name="AppendToFile" value="true"/>
<!-- Maximale Anzahl aufzubewahrender Protokolldateien -->
<param name="MaxSizeRollBackups" value="10"/>
<!-- Fester Dateiname false = je Datum unterschiedliche Dateien erzeugen -->
<param name="StaticLogFileName" value="false"/>
<!-- Dateinamen‑Muster -->
<param name="DatePattern" value="yyyy-MM-dd".log""/>
<!-- Rotationsstrategie: Date = Protokolle nach Datum trennen -->
<param name="RollingStyle" value="Date"/>
<!-- Vorlage für das Protokoll‑Ausgabeformat -->
<layout type="log4net.Layout.PatternLayout">
<param name="ConversionPattern" value="%d [%t] %-5p %c - %m%n" />
<!-- ❗Alte Vorlage enthielt überflüssiges %loggername, das überflüssigen Text am Protokollende erzeugte, entfernt -->
</layout>
</appender>
<!-- Stamm‑Protokollkonfiguration, gilt für die gesamte Anwendung -->
<root>
<!-- Protokollstufe all: alle Ebenen ausgeben; wählbar: DEBUG/INFO/WARN/ERROR/FATAL/OFF -->
<level value="all"/>
<!-- Verknüpfe den oben definierten Appender -->
<appender-ref ref="RollingLogFileAppender"/>
</root>
</log4net>
</configuration>Code-Sprache: HTML, XML (xml)
- Vermeide fest kodierte absolute Pfade wie
G:\xxx. Diese funktionieren auf Servern nicht. Nutze stattdessen den relativen Pfadlogs\\; - In Produktivumgebungen empfehle sich die Stufe
INFOoderERROR, damit zahlreiche DEBUG‑Protokolle nicht Speicherplatz belegen.
Schritt 2: Globale Initialisierung von Log4Net
Füge den Initialisierungscode in der Methode Application_Start der Datei Global.asax ein, die Konfiguration wird beim Anwendungsstart geladen
protected void Application_Start(object sender, EventArgs e)
{
// Log4net initialisieren, Einstellungen aus Web.config einlesen
log4net.Config.XmlConfigurator.Configure();
}Code-Sprache: JavaScript (javascript)
Hinweis: Fehlt diese Zeile, werden trotz Protokollaufrufen keine Dateien erstellt. Das ist ein häufiger Fehler.
Schritt 3: Logger abrufen und Protokolle auf Seiten ausgeben
Schreibe den Aufrufcode in Default.aspx.cs. Der Code kann überall platziert werden, dieses Beispiel zeigt eine einzelne Seite.
using log4net;
public partial class _Default : System.Web.UI.Page
{
// Logger‑Instanz abrufen, Zeichenkette ist frei wählbarer Logger‑Name
public static readonly ILog log = LogManager.GetLogger("logger-name");
protected void Page_Load(object sender, EventArgs e)
{
log.Info("Normalprotokoll");
log.Error("Fehlerprotokoll");
// Zusätzliche verfügbare Ebenen
// log.Debug("Debug‑Protokoll");
// log.Warn("Warnprotokoll");
// log.Fatal("Schwerwiegender‑Fehler‑Protokoll");
}
}
Empfehlung: Definiere ILog als static readonly, um wiederholtes Erzeugen von Instanzen zu vermeiden und die Leistung zu verbessern.
Ausführungsergebnis
- Nach dem Start der Anwendung wird automatisch der Ordner
logsim Wurzelverzeichnis der Webseite erstellt; - Es werden Protokolldateien im Format
2026-08-04.logangelegt; - Beispielinhalt einer Datei:
2026-08-04 15:30:22,123 [6] INFO logger-name - Normalprotokoll
2026-08-04 15:30:22,129 [6] ERROR logger-name - FehlerprotokollCode-Sprache: CSS (css)
Ergänzungen
- Neben Datei‑Ausgabe unterstützt Log4Net zudem Konsolen‑, Datenbank‑ und E‑Mail‑Ausgabe;
- Für neue Projekte vergleiche
NLog/Serilog: diese bieten bessere Unterstützung für .NET Core/.NET 5+. Log4net wird hauptsächlich zur Wartung älterer WebForm‑ und WinForms‑Projekte verwendet.
Einführung und Installation