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
- Visual Studio 2022 (.NET 8.0)
- Nuget packages:
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.
[…] Serilog Github – Serilog Henrique Mauri – Melhores práticas de utilização do Serilog Henrique Mauri -Coletando logs com o Serilog no .NET 6 Milan Jovanović – 5 Serilog Best […]