Dinaup.Logs (Logging)
¿Por qué Dinaup.Logs?
Dinaup.Logs nace de la necesidad de centralizar y estandarizar los registros de la plataforma Dinaup, aportando:
Trazabilidad completa de cada request y proceso.
Métricas automáticas para detectar cuellos de botella.
ElasticSearch como backend opcional para búsquedas y paneles en tiempo real.
Inicialización
La inicialización acostumbra a hacerse en Program.cs
o en tu Startup
de .NET 9+.
Niveles y formato de logging
Dinaup.Logs envuelve Serilog, así que dispones de los niveles clásicos (Verbose
, Debug
, Information
, Warning
, Error
, Fatal
).
Cambia el nivel global en caliente si lo necesitas:
Contextos enriquecidos
Los contextos añaden metadatos automáticos a cada mensaje sin esfuerzo:
5.1 BeginContext
BeginContext
Agrupa los logs de un proceso concreto y opcionalmente incrementa un contador.
Recomendación clave: pasa siempre los parámetros usando nameof(MiClase)
y nameof(MiMétodo)
en lugar de magic strings. De este modo tu código es refactoring‑safe: si cambias el nombre de la clase o del método, el compilador lo detectará inmediatamente.
5.2 BeginCorrelationContext
BeginCorrelationContext
Ideal para flujos distribuidos: incluye un CorrelationId
que viaja por microservicios.
Métricas integradas
Cuando activas autoExportContextMetric
, cada llamada a BeginContext
incrementa un CounterMetric etiquetado con component
y action
.
Crear contadores manuales:
Estas métricas se envían a Elastic Search.
Helpers HandleAction
y HandleActionAsync
HandleAction
y HandleActionAsync
Envuelven código en un bloque try/catch con cronómetro incorporado y logean éxito o excepción.
Versión asíncrona:
Buenas prácticas
No silencies excepciones: si atrapas una, logéala con
Error
y vuelve a lanzarla o maneja el resultado.Evita logs sensibles (tokens, contraseñas). Usa propiedades parametrizadas.
Cierra al apagar la app:
Logs.CloseAndFlush();
Última actualización