Introducción a Serilog: qué es y para qué sirve
\n\nSerilog 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
Instalación de Serilog
\n\nSerilog 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\nInstalación mediante .NET CLI (recomendada):
\ndotnet 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\nInstalación mediante Package Manager Console (Visual Studio):
\nInstall-Package Serilog\nInstall-Package Serilog.Sinks.Console\nInstall-Package Serilog.Sinks.File\nInstall-Package Serilog.Settings.Configuration\nInstall-Package Serilog.AspNetCore\n\nExplicació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
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).
Inicio rápido: primer registro en 30 segundos
\n\nCree una aplicación de consola .NET y agregue el siguiente código en Program.cs:
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 También en la biblioteca
Generación de códigos QR en Java: biblioteca ZXing (guía detallada)
Frameworks CLI para TypeScript: revisión completa y ejemplos de uso