0Pricing
C# Academy · Lekcja

Abstrakcje logowania, Debug/Trace

Proszę używać System.Diagnostics Debug/Trace, dodawać listenery oraz tworzyć niewielką abstrakcję w stylu ILogger, aby oddzielić kod aplikacji od miejsc docelowych logów.

Abstrakcje logowania, Debug/Trace to bezpłatna lekcja C# Academy na CoddyKit. To lekcja 1 z 3. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej C# Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs C# Academy zawiera 3 lekcji w sumie.

Dlaczego logowanie

Cel:

  • Wysyłać komunikaty za pomocą Debug i Trace
  • Dodawać odbiorniki, aby wyświetlać dane wyjściowe
  • Wprowadzić niewielką abstrakcję logowania
  • Dobierać poziomy i stosować proste formatowanie

Podstawy Debug/Trace

Debug służy do programowania; Trace działa w każdej kompilacji. Dodaj ConsoleTraceListener, aby wyświetlać komunikaty w aplikacjach konsolowych.

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");
  }
}

Przykład TraceSource

TraceSource służy do nazwania loggera i filtrowania komunikatów według SourceLevels; jest przydatny do grupowania komunikatów.

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();
  }
}

Mały przykład ILogger

Interfejs oddziela kod wywołujący od docelowego odbiornika; później można dodać odbiornik plikowy lub zdalny bez zmieniania miejsc wywołań.

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");
  }
}

Kontekst i znacznik czasu

Dodaj niewielki kontekst (key=value) oraz znacznik czasu UTC, aby ułatwić korelowanie zdarzeń podczas odczytywania logów.

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");
  }
}

Wskazówki i dobre praktyki

Wskazówki:

  • Wybierz kilka poziomów (Info/Warn/Error)
  • Dodaj co najmniej jeden odbiornik dla Debug/Trace
  • Twórz krótkie komunikaty; dodawaj niewielkie pary kontekstu
  • Nie zapisuj w logach danych poufnych

Dlaczego abstrakcja logowania

Szybkie sprawdzenie: jaka jest główna korzyść ze stosowania abstrakcji logowania, na przykład interfejsu ILogger?

Podsumowanie

Podsumowanie: Używaj Debug/Trace wraz z odbiornikami, aby wyświetlać dane wyjściowe, i opakuj wywołania w niewielki interfejs loggera, aby można było zmieniać odbiorniki bez modyfikowania kodu biznesowego.

Często zadawane pytania

Czy lekcja „Abstrakcje logowania, Debug/Trace” jest bezpłatna?

Tak — pełny tekst „Abstrakcje logowania, Debug/Trace” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu C# Academy, przejdź na CoddyKit PRO. Kurs C# Academy zawiera 3 lekcji w sumie.

Co nauczysz się w „Abstrakcje logowania, Debug/Trace”?

Proszę używać System.Diagnostics Debug/Trace, dodawać listenery oraz tworzyć niewielką abstrakcję w stylu ILogger, aby oddzielić kod aplikacji od miejsc docelowych logów. Ćwiczysz C# Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.

Czy potrzebuję doświadczenia, aby zacząć C# Academy?

Nie wymagamy żadnego doświadczenia. C# Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 1 z 3.

Ile czasu zajmuje lekcja „Abstrakcje logowania, Debug/Trace”?

Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.

Czy mogę pisać i uruchamiać kod w tej lekcji C# Academy?

Tak. Każda lekcja C# Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.

Wszystkie lekcje w tym kursie

  1. Abstrakcje logowania, Debug/Trace
  2. Podstawy profilowania i śladów (koncepcje)
  3. Wzorce walidacji i Guard
← Powrót do C# Academy