Konsolen‑Protokollausgabe

Realisiert die Protokollausgabe einer Konsolenanwendung und unterstützt individuell festlegbare Text‑ und Hintergrundfarben je Protokollstufe. Das macht die Debug‑Phase sehr übersichtlich.

  1. Neue Konsolenanwendung in Visual Studio erstellen
  2. Konfigurationsdatei App.config zum Projekt hinzufügen
  3. log4net einbinden (Installation über NuGet / Verweis auf log4net.dll)
  4. log4net‑Einstellungen in der Datei App.config verfassen
  5. log4net im Quellcode initialisieren und Protokolle ausgeben

Für Konsolenprotokolle lassen sich Vorder‑ und Hintergrundfarben pro Protokollstufe einstellen, um unterschiedliche Protokolltypen voneinander abzugrenzen.

App.config‑Konfiguration

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <configSections>
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
  </configSections>

  <log4net>
    <!-- Farb‑Konsolen‑Ausgabe‑Appender ColoredConsoleAppender -->
    <appender name="ColoredConsoleAppender" type="log4net.Appender.ColoredConsoleAppender">
      <!-- Farbschema für die ERROR‑Stufe -->
      <mapping>
        <level value="ERROR" />
        <foreColor value="White" />
        <backColor value="Red, HighIntensity" />
      </mapping>
      <!-- Farbschema für die DEBUG‑Stufe -->
      <mapping>
        <level value="DEBUG" />
        <backColor value="Green" />
      </mapping>
      <!-- Farbschema für die INFO‑Stufe -->
      <mapping>
        <level value="Info" />
        <backColor value="Yellow" />
      </mapping>
      <!-- Mapping‑Farben für WARN und FATal können Sie nach Bedarf ergänzen -->

      <!-- Vorlage für das Protokoll‑Ausgabeformat -->
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" />
      </layout>
    </appender>

    <!-- Root‑Logger, Konsolenausgabe aktivieren -->
    <root>
      <level value="All" />
      <appender-ref ref="ColoredConsoleAppender" />
    </root>
  </log4net>
</configuration>Code-Sprache: HTML, XML (xml)
Beschreibung der Format‑Platzhalter
  • %date: Zeitpunkt des Protokolleintrags
  • [%thread]: Thread‑Kennnummer
  • %-5level: Protokollstufe (Ausrichtung auf 5 Zeichenbreite)
  • %logger: Klassenname des Protokoll‑Ursprungs
  • %message: Eigentlicher Protokollinhalt
  • %newline: Automatischer Zeilenumbruch

Program.cs

using System;
using log4net;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            // log4net‑Konfiguration laden und initialisieren
            log4net.Config.XmlConfigurator.Configure();
            // Logger‑Instanz abrufen, aktuellen Klassentyp übergeben um Protokollherkunft nachzuvollziehen
            ILog logger = LogManager.GetLogger(typeof(Program));

            // Protokolle aller Stufen ausgeben
            logger.Info("Normale Protokollmeldung");
            logger.Error("Fehlerprotokoll");
            logger.Debug("Debug‑Information");
            logger.Fatal("Schwerwiegender Fehler");
            logger.Warn("Warnmeldung");

            Console.ReadKey();
        }
    }
}Code-Sprache: JavaScript (javascript)

Ausgabeverhalten bei Ausführung

Die Konsole rendert automatisch unterschiedliche Hintergrundfarben je Protokollstufe:

  • INFO: Gelber Hintergrund
  • DEBUG: Grüner Hintergrund
  • ERROR / FATAL: Leuchtend roter Hintergrund
  • WARN: Gelber Hintergrund

Ausgabebeispiel:

2017-03-21 20:35:31,550 [9] INFO  ConsoleApplication1.Program [(null)] - Normale Protokollmeldung
2017-03-21 20:35:31,592 [9] ERROR ConsoleApplication1.Program [(null)] - Fehlerprotokoll
2017-03-21 20:35:31,592 [9] DEBUG ConsoleApplication1.Program [(null)] - DebugInformation
2017-03-21 20:35:31,593 [9] FATAL ConsoleApplication1.Program [(null)] - Schwerwiegender Fehler
2017-03-21 20:35:31,594 [9] WARN  ConsoleApplication1.Program [(null)] - WarnmeldungCode-Sprache: CSS (css)

Konsolen‑Protokollausgabe

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert