Melhores práticas de utilização do Serilog

O Serilog é uma biblioteca de logs poderosa para aplicações .NET. Ele permite escrever logs estruturados e semânticos que podem ser facilmente consumidos por vários coletores, como arquivos, bancos de dados, consoles ou serviços em nuvem.

Ao contrário das estruturas de log tradicionais, o Serilog se concentra no registro estruturado, o que significa que os logs são registrados em um formato estruturado que pode ser facilmente consultado e analisado.

Neste post, vamos configurar e utilizar o Serilog da melhor forma em uma aplicação .NET 8.

Pré-requisitos

1 – Configuração inicial

É aconselhável que a configuração do Serilog em aplicações .NET deva ser o primeiro item da leitura do sistema, para que seja coletado e registrado todos os detalhes em caso de erros. Uma armadilha comum ao usar o Serilog é esquecer de descartar a instância do ILogger quando a aplicação é encerrada. Isso pode fazer com que os logs não sejam gravados corretamente ou até mesmo com vazamentos de memória.

Para evitar esse problema, certifique-se de chamar o CloseAndFlush() em sua instância do logger quando sua aplicação for encerrada:

2 – Utilize o Serilog.Sinks.Async para registrar logs no console

Use esse coletor para reduzir a sobrecarga de registro de chamadas, delegando trabalho a uma thread em segundo plano.

3 – Evite utilizar o Serilog.Sinks.Console em produção

O Console Sink foi projetado para fins de desenvolvimento e depuração. Ele deve ser utilizado em um ambiente local onde você pode visualizar rapidamente a saída dos seus logs. Em produção, é uma boa prática utilizar outros coletores, como Elasticsearch ou Splunk, ou definir o nível mínimo de coleta de logs para Warning.

5 – Utilize o Elasticsearch em vez dos coletores de arquivos e console do Serilog

Os coletores de arquivos e console do Serilog são projetados para fins de desenvolvimento, eles podem rapidamente ficar sobrecarregados com dados de log, causando problemas de desempenho ou até mesmo perda de dados. O Elasticsearch fornece uma solução de registro mais robustas e mais adequadas para ambientes de produção.

5 – Utilize os Enrichments

Os Enrichments permitem adicionar contexto adicional às suas mensagens de log, o que pode ser extremamente útil para depuração e solução de problemas.

Eles são ótimos para adicionar dados contextuais que não estão diretamente relacionados à mensagem de log em si. Por exemplo, você pode usar Enrichments para adicionar tags a cada mensagem de log para poder filtrá-las facilmente por categoria.

6 – Defina o Serilog como o provedor padrão de logs

É uma boa prática chamar o método Logging.ClearProviders() para limpar o provedor de logs e adicionar Serilog como serviço de log padrão, chamando o método Host.UseSerilog(Log.Logger, true).

Finalizando

Em resumo, o Serilog é uma estrutura de log poderosa que oferece uma ampla gama de recursos que ajudam os desenvolvedores a registrarem os logs de maneira eficaz em aplicações .NET. Seguindo as práticas recomendadas discutidas neste artigo, você pode garantir que seus logs forneçam informações valiosas sobre o comportamento da sua aplicação que ajudam a identificar e corrigir problemas rapidamente. 

Lembre-se de que o registro em log é uma parte crucial do desenvolvimento e da manutenção de aplicações. Usar uma biblioteca de log estruturada e poderosa como o Serilog pode fazer uma grande diferença!

Os detalhes completos deste exemplo você encontra no meu GitHub: https://github.com/hgmauri/serilog-best-practices e neste post.

Deixe uma resposta