Serilog para C# (.NET): guía completa con ejemplos

Entrenador de Python en Línea para Principiantes

Aprende Python fácilmente sin sobrecargarte de teoría. Resuelve tareas prácticas con verificación automática, recibe pistas y escribe código directamente en el navegador, sin instalar nada.

Start Course

Introducción a Serilog: qué es y para qué sirve

\n\n

Serilog es una biblioteca potente, flexible y moderna para el registro estructurado en el ecosistema .NET (C#, F#, VB.NET). A diferencia de los frameworks de registro clásicos (como NLog o log4net), que trabajan con mensajes de texto plano, Serilog está diseñado desde el inicio para trabajar con datos estructurados.

\n\n

¿Para qué sirve Serilog?

\n
    \n
  • Registro estructurado: No registras solo una cadena, sino objetos con propiedades nombradas. Esto permite filtrar, buscar y analizar registros de manera eficiente en sistemas como Elasticsearch, Seq, Datadog.
  • \n
  • Flexibilidad (Sinks): Serilog utiliza el concepto de "receptores" (sinks). Puedes enviar registros a la consola, archivo, base de datos, servicios en la nube (Azure, AWS), Elasticsearch, Telegram, Slack y cientos de otros lugares — simplemente conectando el paquete necesario.
  • \n
  • Rendimiento: Serilog está optimizado para aplicaciones de alta carga. Utiliza formato diferido de cadenas (message templates) para evitar asignaciones de memoria innecesarias si el nivel de registro no está activo.
  • \n
  • Facilidad de configuración: Configuración mediante código o archivo JSON. El código mínimo para empezar es de solo un par de líneas.
  • \n
  • Diagnóstico: Permite agregar fácilmente información contextual (por ejemplo, ID de usuario, número de pedido, nombre del método) en cada registro.
  • \n
\n\n

Instalación de Serilog

\n\n

Serilog se distribuye a través de NuGet, el gestor de paquetes para .NET. La instalación se realiza mediante la consola del administrador de paquetes (Package Manager Console) o .NET CLI.

\n\n

Instalación mediante .NET CLI (recomendada):

\n
dotnet add package Serilog\ndotnet add package Serilog.Sinks.Console\ndotnet add package Serilog.Sinks.File\ndotnet add package Serilog.Settings.Configuration\ndotnet add package Serilog.AspNetCore
\n\n

Instalación mediante Package Manager Console (Visual Studio):

\n
Install-Package Serilog\nInstall-Package Serilog.Sinks.Console\nInstall-Package Serilog.Sinks.File\nInstall-Package Serilog.Settings.Configuration\nInstall-Package Serilog.AspNetCore
\n\n

Explicación de los paquetes:

\n
    \n
  • Serilog — núcleo de la biblioteca.
  • \n
  • Serilog.Sinks.Console — receptor para salida en consola.
  • \n
  • Serilog.Sinks.File — receptor para escritura en archivos.
  • \n
  • Serilog.Settings.Configuration — permite leer configuraciones desde appsettings.json.
  • \n
  • Serilog.AspNetCore — integración con ASP.NET Core (agrega contexto HTTP a los registros).
  • \n
\n\n

Nota para los lectores de PythonLib: En Python, el equivalente a la instalación mediante pip sería pip install serilog (pero Serilog es una biblioteca de .NET; para Python existen sus propias herramientas, como structlog).

\n\n

Inicio rápido: primer registro en 30 segundos

\n\n

Cree una aplicación de consola .NET y agregue el siguiente código en Program.cs:

\n\n
using Serilog;\n\n// 1. Configuración de Serilog\nLog.Logger = new LoggerConfiguration()\n    .MinimumLevel.Debug()\n    .WriteTo.Console()\n    .WriteTo.File("logs/myapp.log", rollingInterval: RollingInterval.Day)\n    .CreateLogger();\n\ntry\n{\n    Log.Information("Aplicación iniciada correctamente.");\n\n    int userId = 42;\n    string userName = "Alice";\n    Log.Information("El usuario {UserId} con nombre {UserName} inició sesión.", userId, userName);\n\n    // Ejemplo con error\n    try\n    {\n        throw new InvalidOperationException("Operación no válida");\n    }\n    catch (Exception ex)\n    {\n        Log.Error(ex, "Ocurrió un error al ejecutar la operación para el usuario {UserId}", userId);\n    }\n\n    Log.Warning("Esto es una advertencia. Nivel: {Leve                    

Recommendations