Serilog para C# (.NET): guia completo com exemplos

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

Introdução ao Serilog: o que é e para que serve

\n\n

Serilog é 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\n

Para 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
\n\n

Instalação do Serilog

\n\n

O 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\n

Instalação via .NET CLI (recomendado):

\n
dotnet 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\n

Instalação via Package Manager Console (Visual Studio):

\n
Install-Package Serilog\nInstall-Package Serilog.Sinks.Console\nInstall-Package Serilog.Sinks.File\nInstall-Package Serilog.Settings.Configuration\nInstall-Package Serilog.AspNetCore
\n\n

Explicaçã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
\n\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).

\n\n

Início rápido: primeiro log em 30 segundos

\n\n

Crie um aplicativo de console .NET e adicione o seguinte código em Program.cs:

\n\n
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                    

Recommendations