0Pricing
C# Academy · Lección

Abstracciones de logging y Debug/Trace

Use Debug/Trace de System.Diagnostics, añada listeners y cree una pequeña abstracción al estilo de ILogger para desacoplar el código de la aplicación de los sinks.

Abstracciones de logging y Debug/Trace es una lección gratuita de C# Academy en CoddyKit. Esta es la lección 1 de 3. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de C# Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de C# Academy incluye 3 lecciones en total.

Por qué registrar logs

Objetivo:

  • Envíe mensajes con Debug y Trace
  • Añada listeners para ver la salida
  • Introduzca una pequeña abstracción de logging
  • Elija niveles y un formato sencillo

Conceptos básicos de Debug/Trace

Debug se utiliza durante el desarrollo; Trace está disponible en cualquier compilación. Añada un ConsoleTraceListener para ver los mensajes en aplicaciones de consola.

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

Demostración de TraceSource

TraceSource identifica un logger y filtra por SourceLevels; resulta útil para agrupar mensajes.

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

Demostración de ILogger

Una interfaz desacopla a los consumidores del destino; más adelante puede añadir un destino de archivo o remoto sin cambiar los puntos de llamada.

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

Contexto y marca de tiempo

Añada un pequeño contexto (clave=valor) y una marca de tiempo UTC para facilitar la correlación al leer los logs.

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

Consejos y buenas prácticas

Consejos:

  • Elija unos pocos niveles (Info/Warn/Error)
  • Añada al menos un listener para Debug/Trace
  • Mantenga los mensajes breves; añada pequeños pares de contexto
  • No registre secretos

Por qué usar una abstracción de logging

Comprobación rápida: ¿Cuál es una ventaja principal de usar una abstracción de logging (por ejemplo, una interfaz ILogger)?

Resumen

Resumen: Use Debug/Trace con listeners para ver la salida y envuelva las llamadas tras una pequeña interfaz de logger para poder cambiar los destinos sin tocar el código de negocio.

Preguntas frecuentes

¿La lección «Abstracciones de logging y Debug/Trace» es gratis?

Sí — el texto completo de «Abstracciones de logging y Debug/Trace» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de C# Academy, actualiza a CoddyKit PRO. El curso de C# Academy incluye 3 lecciones en total.

¿Qué aprenderé en «Abstracciones de logging y Debug/Trace»?

Use Debug/Trace de System.Diagnostics, añada listeners y cree una pequeña abstracción al estilo de ILogger para desacoplar el código de la aplicación de los sinks. Practicas C# Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.

¿Necesito experiencia previa para empezar C# Academy?

No se requiere experiencia previa. C# Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 1 de 3.

¿Cuánto tiempo toma la lección «Abstracciones de logging y Debug/Trace»?

La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.

¿Puedo escribir y ejecutar código en esta lección de C# Academy?

Sí. Cada lección de C# Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.

Todas las lecciones de este curso

  1. Abstracciones de logging y Debug/Trace
  2. Profiling básico y trazas (conceptos)
  3. Patrones de validación y guardas
← Volver a C# Academy