Registro para C# (.NET): 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 para C# (.NET): visão geral das melhores soluções



O registro é um aspecto crítico no desenvolvimento de qualquer aplicação séria em C#. Ele permite monitorar o estado do sistema, diagnosticar erros, analisar o comportamento dos usuários e coletar métricas de desempenho. No ecossistema .NET, existem várias bibliotecas maduras para registro, cada uma com seus pontos fortes. Neste artigo, veremos as três soluções mais populares: Serilog, NLog e log4net, além da abstração padrão Microsoft.Extensions.Logging.



Por que uma biblioteca separada para registro?



A classe embutida System.Diagnostics.Debug ou Console.WriteLine é adequada apenas para cenários muito simples. Bibliotecas profissionais oferecem:

  • Níveis de registro (Trace, Debug, Information, Warning, Error, Fatal) — filtragem flexível de mensagens.
  • Registro estruturado — salvamento de dados em formato JSON com possibilidade de análise posterior.
  • Múltiplos "destinos" (sinks/targets) — gravação em arquivo, banco de dados, console, ELK stack, Sentry, Application Insights, etc.
  • Configuração dinâmica — alteração do nível de registro sem reiniciar a aplicação.
  • Desempenho — gravação assíncrona, buffer, impacto mínimo na velocidade de execução.


1. Serilog — o padrão moderno



Serilog é a biblioteca mais popular para .NET, que apostou no registro estruturado. Em vez de formatar strings com string.Format, você usa placeholders nomeados:



using Serilog;

Log.Logger = new LoggerConfiguration() .MinimumLevel.Debug() .WriteTo.Console() .WriteTo.File("logs/app-.log", rollingInterval: RollingInterval.Day) .WriteTo.ApplicationInsights(TelemetryConfiguration.Active, TelemetryConverter.Traces) .CreateLogger();

// Exemplo de registro estruturadoLog.Information("Usuário {UserId} executou pedido {OrderId} no valor de {Total:C}", userId, orderId, total);


Serilog é ideal para microsserviços, aplicações em nuvem e projetos onde a análise profunda de logs via Kibana ou Grafana é importante.



2. NLog — flexibilidade e desempenho



NLog é uma biblioteca poderosa com ricos recursos de roteamento. Ela suporta tanto configuração XML quanto programática. Uma característica do NLog é o mecanismo interno de gravação assíncrona e suporte a regras condicionais.



using NLog;

private static readonly Logger Logger = LogManager.GetCurrentClassLogger();

public void ProcessOrder(Order order){ Logger.Info("Início do processamento do pedido {OrderId}", order.Id); try { // lógica de negócio Logger.Debug("Pedido {OrderId} processado com sucesso", order.Id); } catch (Exception ex) { Logger.Error(ex, "Erro ao processar pedido {OrderId}", order.Id); throw; }}


NLog é frequentemente escolhido para aplicações desktop (WPF, WinForms) e projetos legados devido à facilidade de migração do log4net.



3. log4net — o veterano testado



log4net é uma adaptação da popular biblioteca Java log4j. É a solução mais antiga, ainda amplamente utilizada em projetos corporativos. A principal vantagem é a enorme quantidade de adaptadores e "appenders" escritos ao longo de décadas.



// Configuração via XML (log4net.config)<log4net>    <appender name="RollingFile" type="log4net.Appender.RollingFileAppender">        <file value="logs/app.log" />        <rollingStyle value="Date" />        <datePattern value="yyyyMMdd" />                    

Recommendations