Registro em C# (.NET): Visão Geral das Melhores Soluções e Bibliotecas

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

Registro em C# (.NET): Visão Geral das Melhores Soluções e Bibliotecas

Registro não é apenas gravar mensagens em um arquivo. No desenvolvimento moderno em C# (.NET), é uma ferramenta poderosa para monitoramento, depuração e análise do comportamento da aplicação. Um registro configurado corretamente permite encontrar erros rapidamente, rastrear desempenho e construir análises. Neste artigo, veremos as bibliotecas mais populares e eficientes para .NET, bem como as melhores práticas de uso.



Por que preciso de registro profissional?

O básico Console.WriteLine ou Debug.Write não são adequados para ambiente de produção. Frameworks reais de registro fornecem:

  • Níveis de registro (Trace, Debug, Information, Warning, Error, Critical) — filtragem da importância das mensagens.
  • Dados estruturados — logs em formato JSON, fáceis de analisar (ELK, Splunk).
  • Múltiplos receptores (Sinks/Targets) — gravação em arquivo, console, banco de dados, serviços em nuvem (Azure, AWS).
  • Configuração — ajuste de comportamento sem recompilação do código.
  • Assincronicidade — minimização do impacto no desempenho da aplicação.


Principais bibliotecas para .NET

Vamos considerar quatro soluções principais que dominam o ecossistema .NET.



1. Serilog — padrão de registro estruturado

Serilog é a biblioteca mais popular para .NET, que primeiro popularizou o conceito de structured logging. Em vez de concatenar strings, você passa um modelo e parâmetros, permitindo salvar dados em formato legível por máquina.

Principais recursos:

  • Integração profunda com .NET Core / .NET 5+.
  • Grande quantidade de Sinks (Serilog.Sinks.Console, Serilog.Sinks.File, Serilog.Sinks.ElasticSearch).
  • Suporte a Enrichers para adicionar contexto automaticamente (nome da máquina, versão da aplicação, ThreadId).
  • API limpa e concisa.


Exemplo de configuração e uso do Serilog:

using Serilog;

// Configuração em Program.cs (.NET 6+)Log.Logger = new LoggerConfiguration() .MinimumLevel.Information() .WriteTo.Console() .WriteTo.File("logs/app-.log", rollingInterval: RollingInterval.Day) .Enrich.WithMachineName() .CreateLogger();

try{ Log.Information("Aplicação iniciada"); var userId = 123; Log.Information("Usuário {UserId} fez login", userId); // Exemplo com exceção throw new InvalidOperationException("Erro de teste");}catch (Exception ex){ Log.Error(ex, "Ocorreu um erro crítico no método {Method}", nameof(Main));}finally{ Log.CloseAndFlush();}


2. NLog — flexível e de alto desempenho

NLog é um dos frameworks mais antigos que lida muito bem com sistemas de alta carga. Sua principal característica é o roteamento flexível de regras (rules) e suporte a gravação assíncrona "pronta para uso".

Principais características:

  • Suporte a configuração XML, JSON e baseada em código.
  • Suporte nativo à rotação de logs por tamanho e tempo.
  • Extensibilidade através de Targets personalizados.
  • Menor consumo de memória em comparação com Serilog em alguns cenários.


Exemplo de configuração do NLog via código:

using NLog;using NLog.Config;using NLog.Targets;

// Configuração do loggervar config = new LoggingConfiguration();var consoleTarget = new ConsoleTarget("console");config.AddRule(LogLevel.Info, LogLevel.Fatal, consoleTarget);

var fileTarget = new FileTarget("file"){ FileName = "${basedir}/logs/${shortdate}.log", Layout = "${longdate} | ${level:uppercase=true} | ${message} ${exception:fo

Recommendations