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
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
- Abstracciones de logging y Debug/Trace
- Profiling básico y trazas (conceptos)
- Patrones de validación y guardas