0Pricing
C# Academy · Leçon

Abstractions de journalisation, Debug/Trace

Utilisez System.Diagnostics Debug/Trace, ajoutez des écouteurs et créez une petite abstraction de style ILogger afin de découpler le code de l’application des destinations des journaux.

Abstractions de journalisation, Debug/Trace est une leçon C# Academy gratuite sur CoddyKit. Ceci est la leçon 1 sur 3. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage C# Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours C# Academy comprend 3 leçons au total.

Pourquoi utiliser la journalisation

Objectif :

  • Envoyer des messages avec le débogage et la trace
  • Ajouter des écouteurs pour voir la sortie
  • Introduire une petite abstraction de journalisation
  • Choisir des niveaux et un formatage simple

Principes de base du débogage et de la trace

Le débogage est destiné au développement ; la trace est disponible dans toute version. Ajoutez un ConsoleTraceListener pour voir les messages dans les applications en console.

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

Démonstration de TraceSource

TraceSource nomme un enregistreur et filtre selon SourceLevels ; c’est utile pour regrouper les messages.

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

Petite démonstration d’ILogger

Une interface découple les appelants de la destination ; vous pourrez ensuite ajouter une destination fichier ou distante sans modifier les sites d’appel.

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

Contexte et horodatage

Ajoutez un petit contexte (clé=valeur) et un horodatage UTC pour faciliter la corrélation lors de la lecture des journaux.

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

Conseils et bonnes pratiques

Conseils :

  • Choisissez quelques niveaux (Info/Warn/Error)
  • Ajoutez au moins un écouteur pour le débogage et la trace
  • Gardez des messages courts ; ajoutez de petites paires de contexte
  • Ne journalisez pas de secrets

Pourquoi utiliser une abstraction de journalisation

Vérification rapide : quel est le principal avantage d’utiliser une abstraction de journalisation (par exemple, une interface ILogger) ?

Récapitulatif

Récapitulatif : utilisez le débogage et la trace avec des écouteurs pour voir la sortie, puis encapsulez les appels derrière une petite interface d’enregistrement afin de pouvoir changer de destination sans toucher au code métier.

Questions Fréquemment Posées

La leçon « Abstractions de journalisation, Debug/Trace » est-elle gratuite ?

Oui — le texte complet de « Abstractions de journalisation, Debug/Trace » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours C# Academy, passe à CoddyKit PRO. Le cours C# Academy comprend 3 leçons au total.

Qu'est-ce que j'apprendrai dans « Abstractions de journalisation, Debug/Trace » ?

Utilisez System.Diagnostics Debug/Trace, ajoutez des écouteurs et créez une petite abstraction de style ILogger afin de découpler le code de l’application des destinations des journaux. Tu pratiques C# Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.

Dois-je avoir de l'expérience pour commencer C# Academy ?

Aucune expérience préalable n'est requise. C# Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 1 sur 3.

Combien de temps prend la leçon « Abstractions de journalisation, Debug/Trace » ?

La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.

Peux-tu écrire et exécuter du code dans cette leçon C# Academy ?

Oui. Chaque leçon C# Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.

Toutes les leçons de ce cours

  1. Abstractions de journalisation, Debug/Trace
  2. Profilage et traces de base (concepts)
  3. Modèles de contrôle et de validation
← Retour à C# Academy