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 • Equip 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?

Juga una estona abans de marxar

ELS NOSTRES SERVEIS

Com et podem ajudar

Intel·ligència artificial

Agents d'IA, chatbots i assistents intel·ligents que automatitzen tasques i atenen els teus clients 24/7 per millorar l'eficiència del teu negoci.

Més info

Desenvolupament de programari

Aplicacions web, mòbils i d'escriptori, intranets, e-commerce, SaaS i plataformes de gestió dissenyades per a les necessitats concretes de la teva empresa.

Més info

Serveis cloud

Migració, infraestructura, hosting gestionat, alta disponibilitat i seguretat en Microsoft Azure i Amazon Web Services perquè el teu negoci escali sense límits.

Més info

Ciberseguretat i pentesting

Auditories de seguretat, test d'intrusió (pentesting) i protecció d'aplicacions, dades i infraestructura on-premise i cloud, amb hacking ètic i compliment normatiu.

Més info

Business Intelligence

Quadres de comandament i anàlisi de dades amb Power BI: integrem les teves fonts, dissenyem dashboards i KPIs i convertim les teves dades en decisions.

Més info

Automatització de processos

Automatitzem tasques repetitives i connectem les teves aplicacions amb n8n, Power Automate, Make i RPA, eliminant treball manual i augmentant la productivitat.

Més info

Formació per a empreses

Formem els teus equips en tecnologia amb criteri: desenvolupament web, bases de dades, Git, bones pràctiques i seguretat, automatització amb n8n, intel·ligència artificial per a empreses i creació de solucions d'IA amb Azure AI Foundry.

Més info

Auditoria de codi

Auditem el codi que creguis tu, el teu equip o una IA: et diem què està bé i què millorar, el securitzem i el deixem llest per a producció, web o app.

Més info

Generació d'imatges amb IA

Creem per tu les imatges que necessita el teu negoci amb intel·ligència artificial: producte, xarxes, publicitat, il·lustració i avatars. Tu ens dius què vols i t'ho lliurem llest per fer servir.

Més info

Generació de vídeos amb IA

Creem per tu vídeos amb intel·ligència artificial: promocionals, per a xarxes, presentadors virtuals, doblatge i animacions. Ens comptes la idea i t'ho lliurem muntat i llest per publicar.

Més info

Avatars conversacionals amb IA

Creem avatars conversacionals amb IA —humans digitals amb cara i veu— que atenen els teus clients i equips amb el coneixement de la teva empresa, a la teva web, monitors interactius, WhatsApp o Teams.

Més info

Màrqueting Online i IA

Google Ads, Meta Ads, LinkedIn Ads i posicionament en motors d'IA (GEO/AEO): captem clients i fem que la teva marca aparegui on et busquen, també a ChatGPT, Gemini i Perplexity.

Més info

Tens un projecte en ment?

Explica'ns la teva visió i la convertim en una solució de programari. Sigui quin sigui l'abast, fem realitat la teva idea.

Live Chat