C# Academy · Lektion

Logging-Abstraktionen, Debug/Trace

Verwenden Sie System.Diagnostics Debug/Trace, fügen Sie Listener hinzu und erstellen Sie eine kleine ILogger-ähnliche Abstraktion, um den Anwendungscode von den Ausgabesenken zu entkoppeln.

Lektion 1 von 38 Schritte

Logging-Abstraktionen, Debug/Trace ist eine kostenlose C# Academy-Lektion auf CoddyKit. Dies ist Lektion 1 von 3. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des C# Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der C# Academy-Kurs umfasst insgesamt 3 Lektionen.

Warum Logging

Ziel:

  • Senden Sie Nachrichten mit Debug und Trace
  • Fügen Sie Listener hinzu, um die Ausgabe zu sehen
  • Führen Sie eine kleine Logging-Abstraktion ein
  • Wählen Sie Ebenen und eine einfache Formatierung

Grundlagen von Debug und Trace

Debug ist für die Entwicklung gedacht; Trace steht in jedem Build zur Verfügung. Fügen Sie einer Konsolenanwendung einen ConsoleTraceListener hinzu, um Nachrichten in der Konsole zu sehen.

using System;
using System.Diagnostics;

// Demo: show Debug/Trace after adding a ConsoleTraceListener
public class Program
{
  public static void Main(string[] args)
  {
    // By default, console apps may not show Debug/Trace. Add a listener.
    Trace.Listeners.Clear();
    Trace.Listeners.Add(new ConsoleTraceListener());

    Debug.WriteLine("Debug: only in debug builds (often)");
    Trace.WriteLine("Trace: in all builds (commonly)");

    Trace.TraceInformation("Info message");
    Trace.TraceWarning("Warning message");
    Trace.TraceError("Error message");
  }
}

TraceSource-Demo

TraceSource benennt einen Logger und filtert nach SourceLevels; das ist nützlich, um Nachrichten zu gruppieren.

using System;
using System.Diagnostics;

// Demo: TraceSource can group logs by name and level.
public class Program
{
  public static void Main(string[] args)
  {
    var src = new TraceSource("Calc", SourceLevels.Information);
    src.Listeners.Clear();
    src.Listeners.Add(new ConsoleTraceListener());

    src.TraceEvent(TraceEventType.Information, 1001, "Starting");
    src.TraceEvent(TraceEventType.Warning, 1002, "Low precision");
    src.TraceEvent(TraceEventType.Error, 1003, "Divide by zero prevented");
    src.Flush();
    src.Close();
  }
}

Kleine ILogger-Demo

Eine Schnittstelle entkoppelt Aufrufer vom Sink. Später können Sie einen Datei- oder Remote-Sink hinzufügen, ohne die Aufrufstellen zu ändern.

using System;

// Minimal ILogger-like abstraction for beginners.
public interface ILogger
{
  void Info(string msg);
  void Warn(string msg);
  void Error(string msg);
}

public class ConsoleLogger : ILogger
{
  private readonly string _name;
  public ConsoleLogger(string name) { _name = name; }

  public void Info(string msg)  { Console.WriteLine("[INFO] "  + _name + " - " + msg); }
  public void Warn(string msg)  { Console.WriteLine("[WARN] "  + _name + " - " + msg); }
  public void Error(string msg) { Console.WriteLine("[ERROR] " + _name + " - " + msg); }
}

public class Program
{
  public static void Main(string[] args)
  {
    ILogger log = new ConsoleLogger("Checkout");
    log.Info("Start");
    log.Warn("Slow network");
    log.Error("Payment failed");
  }
}

Kontext und Zeitstempel

Fügen Sie einen kleinen Kontext (key=value) und einen UTC-Zeitstempel hinzu, damit sich Einträge beim Lesen der Logs leichter zuordnen lassen.

using System;

// Add a timestamp and tiny key=value context.
public interface ILogger
{
  void Info(string msg, string contextKey, string contextValue);
}

public class ConsoleLogger : ILogger
{
  private readonly string _name;
  public ConsoleLogger(string name) { _name = name; }

  public void Info(string msg, string key, string value)
  {
    string stamp = DateTime.UtcNow.ToString("u"); // 2009-06-15 13:45:30Z
    Console.WriteLine(stamp + " [INFO] " + _name + " " + key + "=" + value + " :: " + msg);
  }
}

public class Program
{
  public static void Main(string[] args)
  {
    ILogger log = new ConsoleLogger("Search");
    log.Info("Query executed", "q", "apple");
    log.Info("Cache miss", "userId", "42");
  }
}

Tipps und gute Praxis

Tipps:

  • Wählen Sie wenige Ebenen (Info/Warn/Error)
  • Fügen Sie mindestens einen Listener für Debug/Trace hinzu
  • Halten Sie Nachrichten kurz und fügen Sie kleine Kontextpaare hinzu
  • Protokollieren Sie keine Geheimnisse

Warum eine Logging-Abstraktion

Kurzer Check: Was ist ein wesentlicher Vorteil der Verwendung einer Logging-Abstraktion (z. B. einer ILogger-Schnittstelle)?

Zusammenfassung

Zusammenfassung: Verwenden Sie Debug/Trace mit Listenern, um die Ausgabe zu sehen, und kapseln Sie Aufrufe hinter einer kleinen Logger-Schnittstelle, damit sich Sinks ändern lassen, ohne den Geschäftscode anzupassen.

Kostenlos starten

Lerne C# mit einem KI-Tutor — kostenlos

Schreibe und führe echten Code in deinem Browser aus, bekomme sofortige Hilfe von einem 24/7 KI-Tutor und setze dein Lernen im Web oder in der App fort.

Kurse
93
Lektionen
346

Häufig gestellte Fragen

Ist die Lektion „Logging-Abstraktionen, Debug/Trace“ kostenlos?

Ja — der vollständige Text von „Logging-Abstraktionen, Debug/Trace“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des C# Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der C# Academy-Kurs umfasst insgesamt 3 Lektionen.

Was lerne ich in „Logging-Abstraktionen, Debug/Trace“?

Verwenden Sie System.Diagnostics Debug/Trace, fügen Sie Listener hinzu und erstellen Sie eine kleine ILogger-ähnliche Abstraktion, um den Anwendungscode von den Ausgabesenken zu entkoppeln. Du übst C# Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.

Brauche ich Erfahrung, um C# Academy zu starten?

Keine Vorkenntnisse erforderlich. C# Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 1 von 3.

Wie lange dauert die Lektion „Logging-Abstraktionen, Debug/Trace“?

Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.

Kann ich in dieser C# Academy-Lektion Code schreiben und ausführen?

Ja. Jede C# Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.

Alle Lektionen in diesem Kurs

  1. Logging-Abstraktionen, Debug/Trace
  2. Grundlagen von Profiling und Traces (Konzepte)
  3. Guard- und Validierungsmuster
← Zurück zu C# Academy