Registro inteligente con Serilog en .NET

Descubre Serilog en .NET: registros estructurados, control dinámico de niveles, API de gestión y sinks personalizados (incluido AWS SNS) para monitoreo eficiente sin redeploy.

8 sept 2025 • 5 min de lectura • Equipo Q2BSTUDIO

Inteligencia-Artificial-

El registro es mucho más que escribir mensajes en un archivo es el sistema nervioso de tu aplicación. Te dice qué salió mal cuándo y a menudo por qué. En sistemas en producción, el registro se convierte en una línea de vida para diagnosticar problemas rastrear el comportamiento de los usuarios y mantener la claridad operativa.

Pero registrar no se trata solo de volumen se trata de control. Muy poco te deja a ciegas. Demasiado te sumerge en ruido.

En Serilog, una biblioteca de registro estructurado para .NET que aporta claridad flexibilidad y poder a tu estrategia de registro. A diferencia de registradores tradicionales Serilog trata los logs como datos enriquecidos no solo cadenas lo que facilita filtrarlos consultararlos y enrutar a múltiples destinos.

Serilog ofrece:

Registro estructurado con propiedades nombradas

Sinks flexibles para escribir logs en archivos en consola bases de datos servicios en la nube y más

Control en tiempo real sobre los niveles de registro

Filtrado personalizado para evitar inundar sistemas externos

Extensibilidad para integrar tus propios sinks

Ya sea que estés depurando una característica inestable o monitoreando errores críticos en producción en este artículo exploraremos cómo lograr control sobre Serilog sin volver a desplegar ni reiniciar tu aplicación.

Utilizando las características anteriores de Serilog exploraremos cómo:

Controlar dinámicamente el nivel de log de Serilog en tiempo de ejecución usando LoggingLevelSwitch

Exponer el control de nivel de log mediante un panel de administración o API

Auto-elevación de logging durante excepciones y revertir tras un tiempo

Enviar logs filtrados a AWS SNS mediante una sink personalizada

Control de Nivel de Registro en Tiempo de Ejecución

Comencemos configurando Serilog en la aplicación

Log.Logger = new LoggerConfiguration().WriteTo.Console().CreateLogger();

var levelSwitch = new LoggingLevelSwitch(LogEventLevel.Error); builder.Services.AddSingleton(levelSwitch);

Log.Logger = new LoggerConfiguration().MinimumLevel.ControlledBy(levelSwitch).WriteTo.Console().WriteTo.File(logs/log.txt).CreateLogger();

levelSwitch.MinimumLevel = LogEventLevel.Information;

Exponiendo el control de nivel de log mediante API

Sabiendo que ya contamos con un switch, podemos usar o exponerlo mediante una API para invocarlo directamente o desde un panel administrativo

[ApiController] [Route(api/logging)]

public class LoggingController : ControllerBase { private readonly LoggingLevelSwitch _levelSwitch; public LoggingController(LoggingLevelSwitch levelSwitch) { _levelSwitch = levelSwitch; } [HttpPost(set-level)] public IActionResult SetLevel([FromQuery] string level) { _levelSwitch.MinimumLevel = Enum.Parse<LogEventLevel>(level, true); return Ok(Log level set to {level}); } }

Log Level Control from Admin Dashboard

La API anterior puede ser invocada desde un panel de administración o desde una interfaz frontend

Abrir desplegable de selección

<select onChange={e => setLogLevel(e.target.value)}> <option value=Error>Error</option> <option value=Information>Information</option> <option value=Debug>Debug</option></select>

API Call

const setLogLevel = async level => { fetch(/api/logging/set-level?level=${level}, { method: post }); }

Esto permitirá a tu equipo tener control en tiempo real sobre la verbosidad de los registros sin necesidad de redeploys.

Auto-Elevate Logging on Exceptions

No solo vía API también podemos usar el switch de nivel de registro de forma silenciosa en nuestra app por ejemplo ante una excepción fatal. Vamos a usar el switch en el manejador global de excepciones de la app

public class GlobalExceptionMiddleware { private readonly RequestDelegate _next; private readonly LoggingLevelSwitch _levelSwitch; public GlobalExceptionMiddleware(RequestDelegate next, LoggingLevelSwitch levelSwitch) { _next = next; _levelSwitch = levelSwitch; } public async Task Invoke(HttpContext context) { try { await _next(context); } catch (Exception ex) { _levelSwitch.MinimumLevel = LogEventLevel.Information; Log.Error(ex, Unhandled exception occurred) Log.Information(Log level elevated to Info) _ = Task.Delay(TimeSpan.FromMinutes(5)).ContinueWith(_ => { Log.Information(Log level reverted to Error) _levelSwitch.MinimumLevel = LogEventLevel.Error; }); context.Response.StatusCode = 500; await context.Response.WriteAsync Something went wrong. } } }

Note: El Log.Information debe ir antes de volver a establecer el nivel a Error para que se emita.

No olvides registrar el middleware

app.UseMiddleware<GlobalExceptionMiddleware>()

¿Cómo puede la elevación del nivel de registro ayudar a depurar ?

Podemos usar Log.Information en diferentes puntos de nuestra app para la trazabilidad, pero el nivel de registro establecido en Error no emitirá estos mensajes hasta que cambiemos el nivel. Entonces estos mensajes informativos en los registros nos ayudarán a averiguar dónde se rompió algo especialmente en trabajos en segundo plano.

Setting up and using a Custom Sink

Sinks son cualquier destino al que quieras que Serilog envíe logs pueden ser un archivo una cola de mensajes o algún servicio de notificaciones en la nube. En nuestro ejemplo crearemos un sink que envíe logs a un tema AWS SNS.

public class AwsSnsSink : ILogEventSink { private readonly IAmazonSimpleNotificationService _snsClient; private readonly string _topicArn; public AwsSnsSink(IAmazonSimpleNotificationService snsClient, string topicArn) { _snsClient = snsClient; _topicArn = topicArn; } public void Emit(LogEvent logEvent) { var message = logEvent.RenderMessage(); _snsClient.PublishAsync(new PublishRequest { TopicArn = _topicArn, Message = ${logEvent.Timestamp}: ${logEvent.Level} - ${message} }); } }

Registra el sink en Program.cs y añádelo a la configuración de Serilog

builder.Services.AddAWSService<IAmazonSimpleNotificationService>(); builder.Services.AddSingleton(levelSwitch); var snsClient = builder.Services.BuildServiceProvider().GetRequiredService<IAmazonSimpleNotificationService>(); var topicArn = builder.Configuration[AWS:SnsTopicArn]; Log.Logger = new LoggerConfiguration() .MinimumLevel.ControlledBy(levelSwitch) .WriteTo.Console() .WriteTo.File(logs/log.txt) .WriteTo.Sink(new AwsSnsSink(snsClient, topicArn)) .CreateLogger();

Asegúrate de que tus credenciales y región de AWS estén configuradas a través de variables de entorno o appsettings.json

Filtrado para evitar inundar SNS

Ahora que tenemos un sink personalizado para recibir logs debemos tener cuidado con el costo y no saturar el tema. Demasiado ruido también sale caro.

Podemos modificar el método Emit de la clase sink

public void Emit(LogEvent logEvent) { if (logEvent.Level < LogEventLevel.Warning) return; // continuar enviando }

O podemos añadir el filtro en la configuración de Serilog en Program.cs

... .WriteTo.Logger(lc => lc .Filter.ByIncludingOnly(le => le.Level >= LogEventLevel.Warning) WriteTo.Sink(new AwsSnsSink(snsClient, topicArn)) ...

Esto garantiza que solo Warning, Error y Fatal lleguen a SNS manteniendo esta opción rentable y la canalización en la nube eficiente y significativa.

Conclusión

Con LoggingLevelSwitch de Serilog obtienes control en tiempo de ejecución sobre la verbosidad de los registros. Combínalo con sinks personalizados y filtrado inteligente y tendrás un pipeline de registro que es fácil para el desarrollo y seguro para la producción.

Ya sea que estés enviando logs a servicios cloud aws y azure o a un panel como Power BI para observabilidad e inteligencia de negocio, esta arquitectura te ofrece la flexibilidad para observar depurar y escalar sin ahogarte en ruido de logs. En IA para empresas y en proyectos de aplicaciones a medida de Q2BSTUDIO encontrarás soluciones que combinan inteligencia artificial ciberseguridad y servicios en la nube para impulsar tu negocio. En Q2BSTUDIO somos una empresa de desarrollo de software especializada en aplicaciones a medida y automatización de procesos con experiencia en ciberseguridad IA para empresas y servicios inteligencia de negocio. Si buscas potenciar tu negocio con inteligencia artificial agentes IA y power bi para mejorar tu posicionamiento web en relación a esas palabras clave, contáctanos para una consulta inicial y descubre cómo una solución de registro inteligente con Serilog puede integrarse con tu estrategia de software a medida y soluciones en la nube

¿UNA PAUSA?

Juega un momento antes de irte

NUESTROS SERVICIOS

Cómo podemos ayudarte

Inteligencia artificial

Agentes de IA, chatbots y asistentes inteligentes que automatizan tareas y atienden a tus clientes 24/7 para mejorar la eficiencia de tu negocio.

Más info

Desarrollo de software

Aplicaciones web, móviles y de escritorio, intranets, e-commerce, SaaS y plataformas de gestión diseñadas para las necesidades concretas de tu empresa.

Más info

Servicios cloud

Migración, infraestructura, hosting gestionado, alta disponibilidad y seguridad en Microsoft Azure y Amazon Web Services para que tu negocio escale sin límites.

Más info

Ciberseguridad y pentesting

Auditorías de seguridad, test de intrusión (pentesting) y protección de aplicaciones, datos e infraestructura on-premise y cloud, con hacking ético y cumplimiento normativo.

Más info

Business Intelligence

Cuadros de mando y análisis de datos con Power BI: integramos tus fuentes, diseñamos dashboards y KPIs y convertimos tus datos en decisiones.

Más info

Automatización de procesos

Automatizamos tareas repetitivas y conectamos tus aplicaciones con n8n, Power Automate, Make y RPA, eliminando trabajo manual y aumentando la productividad.

Más info

Formación para empresas

Formamos a tus equipos en tecnología con criterio: desarrollo web, bases de datos, Git, buenas prácticas y seguridad, automatización con n8n, inteligencia artificial para empresas y creación de soluciones de IA con Azure AI Foundry.

Más info

Auditoría de código

Auditamos el código que creas tú, tu equipo o una IA: te decimos qué está bien y qué mejorar, lo securizamos y lo dejamos listo para producción, web o app.

Más info

Generación de imágenes con IA

Creamos por ti las imágenes que necesita tu negocio con inteligencia artificial: producto, redes, publicidad, ilustración y avatares. Tú nos dices qué quieres y te lo entregamos listo para usar.

Más info

Generación de vídeos con IA

Creamos por ti vídeos con inteligencia artificial: promocionales, para redes, presentadores virtuales, doblaje y animaciones. Nos cuentas la idea y te lo entregamos montado y listo para publicar.

Más info

Avatares conversacionales con IA

Creamos avatares conversacionales con IA —humanos digitales con cara y voz— que atienden a tus clientes y equipos con el conocimiento de tu empresa, en tu web, monitores interactivos, WhatsApp o Teams.

Más info

Marketing Online e IA

Google Ads, Meta Ads, LinkedIn Ads y posicionamiento en motores de IA (GEO/AEO): captamos clientes y hacemos que tu marca aparezca donde te buscan, también en ChatGPT, Gemini y Perplexity.

Más info

¿Tienes un proyecto en mente?

Cuéntanos tu visión y la convertimos en una solución de software. Sea cual sea el alcance, hacemos realidad tu idea.

Live Chat