Introdução ao Serilog: o que é e para que serve
\n\nSerilog é uma biblioteca poderosa, flexível e moderna para registro estruturado de logs no ecossistema .NET (C#, F#, VB.NET). Diferente dos frameworks clássicos de logging (como NLog ou log4net), que trabalham com mensagens de texto simples, o Serilog foi projetado desde o início para trabalhar com dados estruturados.
\n\nPara que serve o Serilog?
\n- \n
- Log estruturado: Você registra não apenas uma string, mas objetos com propriedades nomeadas. Isso permite filtrar, pesquisar e analisar logs de forma eficiente em sistemas como Elasticsearch, Seq, Datadog. \n
- Flexibilidade (Sinks): O Serilog usa o conceito de "receptores" (sinks). Você pode enviar logs para o console, arquivo, banco de dados, serviços em nuvem (Azure, AWS), Elasticsearch, Telegram, Slack e centenas de outros lugares — basta conectar o pacote necessário. \n
- Desempenho: O Serilog é otimizado para aplicações de alta carga. Ele usa formatação de string adiada (message templates) para evitar alocações de memória desnecessárias se o nível de log não estiver ativo. \n
- Facilidade de configuração: Configuração via código ou arquivo JSON. Código mínimo para começar — apenas algumas linhas. \n
- Diagnóstico: Permite adicionar facilmente informações contextuais (por exemplo, ID do usuário, número do pedido, nome do método) em cada log. \n
Instalação do Serilog
\n\nO Serilog é distribuído via NuGet — o gerenciador de pacotes para .NET. A instalação é feita através do Console do Gerenciador de Pacotes (Package Manager Console) ou do .NET CLI.
\n\nInstalação via .NET CLI (recomendado):
\ndotnet add package Serilog\ndotnet add package Serilog.Sinks.Console\ndotnet add package Serilog.Sinks.File\ndotnet add package Serilog.Settings.Configuration\ndotnet add package Serilog.AspNetCore\n\nInstalação via Package Manager Console (Visual Studio):
\nInstall-Package Serilog\nInstall-Package Serilog.Sinks.Console\nInstall-Package Serilog.Sinks.File\nInstall-Package Serilog.Settings.Configuration\nInstall-Package Serilog.AspNetCore\n\nExplicação dos pacotes:
\n- \n
- Serilog — núcleo da biblioteca. \n
- Serilog.Sinks.Console — receptor para saída no console. \n
- Serilog.Sinks.File — receptor para gravação em arquivos. \n
- Serilog.Settings.Configuration — permite ler configurações do
appsettings.json. \n - Serilog.AspNetCore — integração com ASP.NET Core (adiciona contexto HTTP aos logs). \n
Nota para leitores do PythonLib: Em Python, o análogo da instalação via pip é pip install serilog (mas Serilog é uma biblioteca .NET; para Python existem suas próprias ferramentas, como structlog).
Início rápido: primeiro log em 30 segundos
\n\nCrie um aplicativo de console .NET e adicione o seguinte código em Program.cs:
using Serilog;\n\n// 1. Configuração do Serilog\nLog.Logger = new LoggerConfiguration()\n .MinimumLevel.Debug()\n .WriteTo.Console()\n .WriteTo.File("logs/myapp.log", rollingInterval: RollingInterval.Day)\n .CreateLogger();\n\ntry\n{\n Log.Information("Aplicativo iniciado com sucesso.");\n\n int userId = 42;\n string userName = "Alice";\n Log.Information("Usuário {UserId} com nome {UserName} fez login.", userId, userName);\n\n // Exemplo com erro\n try\n {\n throw new InvalidOperationException("Operação inválida");\n }\n catch (Exception ex)\n {\n Log.Error(ex, "Ocorreu um erro ao executar a operação para o usuário {UserId}", userId);\n }\n\n Log.Warning("Este é um aviso. Nível: {Leve Também na biblioteca
Trabalho com Markdown em C++: bibliotecas, parsers e ferramentas
Trabalhando com arquivos ZIP em Node.js: guia completo
Trabalho com imagens em Go (Golang): image, draw, imaging, resize
Pistache para C++: guia completo com exemplos práticos
Geração de PDF em Kotlin: bibliotecas e ferramentas (iText, Apache PDFBox)