0Pricing
C# Academy · Lezione

Astrazioni per il logging, Debug/Trace

Usate Debug/Trace di System.Diagnostics, aggiungete listener e create una piccola astrazione in stile ILogger per separare il codice dell’app dai sink.

Astrazioni per il logging, Debug/Trace è una lezione C# Academy gratuita su CoddyKit. Questa è la lezione 1 di 3. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento C# Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso C# Academy include 3 lezioni in totale.

Perché usare il logging

Obiettivo:

  • Inviare messaggi con Debug e Trace
  • Aggiungere listener per visualizzare l'output
  • Introdurre una piccola astrazione di logging
  • Scegliere i livelli e una formattazione semplice

Nozioni di base su Debug/Trace

Debug è pensato per lo sviluppo; Trace è disponibile in qualsiasi build. Aggiunga un ConsoleTraceListener per visualizzare i messaggi nelle applicazioni 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");
  }
}

Dimostrazione di TraceSource

TraceSource assegna un nome a un logger e filtra i messaggi in base a SourceLevels; è utile per raggruppare i messaggi.

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

Piccola dimostrazione di ILogger

Un'interfaccia disaccoppia i chiamanti dalla destinazione; in seguito potrà aggiungere una destinazione su file o remota senza modificare i punti di chiamata.

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

Contesto e timestamp

Aggiunga un piccolo contesto (chiave=valore) e un timestamp UTC per correlare più facilmente gli eventi durante la lettura dei log.

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

Suggerimenti e buone pratiche

Suggerimenti:

  • Scelga pochi livelli (Info/Warn/Error)
  • Aggiunga almeno un listener per Debug/Trace
  • Mantenga brevi i messaggi; aggiunga piccole coppie di contesto
  • Non registri informazioni segrete

Perché usare un'astrazione di logging

Controllo rapido: qual è uno dei principali vantaggi dell'utilizzo di un'astrazione di logging (ad esempio un'interfaccia ILogger)?

Riepilogo

Riepilogo: utilizzi Debug/Trace con i listener per visualizzare l'output e racchiuda le chiamate dietro una piccola interfaccia logger, così le destinazioni possono cambiare senza modificare il codice di business.

Domande Frequenti

La lezione «Astrazioni per il logging, Debug/Trace» è gratuita?

Sì — il testo completo di «Astrazioni per il logging, Debug/Trace» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso C# Academy, passa a CoddyKit PRO. Il corso C# Academy include 3 lezioni in totale.

Cosa imparerò in «Astrazioni per il logging, Debug/Trace»?

Usate Debug/Trace di System.Diagnostics, aggiungete listener e create una piccola astrazione in stile ILogger per separare il codice dell’app dai sink. Eserciti C# Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.

Ho bisogno di esperienza per iniziare C# Academy?

Non è richiesta alcuna esperienza precedente. C# Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 1 di 3.

Quanto tempo richiede la lezione «Astrazioni per il logging, Debug/Trace»?

La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.

Posso scrivere ed eseguire codice in questa lezione C# Academy?

Sì. Ogni lezione C# Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.

Tutte le lezioni di questo corso

  1. Astrazioni per il logging, Debug/Trace
  2. Profilazione e trace di base (concetti)
  3. Pattern di guardia e convalida
← Torna a C# Academy