NLog para C# (.NET): guia completo com exemplos práticos

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

NLog para C# (.NET): guia completo com exemplos práticos

Bem-vindo ao guia detalhado sobre a biblioteca NLog para a plataforma .NET. NLog é um sistema de logging poderoso, flexível e de alto desempenho que se tornou o padrão de facto para muitos projetos .NET. Neste artigo, vamos abordar tudo: desde a instalação até técnicas avançadas, com exemplos reais de código e dicas de otimização.

1. O que é NLog e por que usá-la?

NLog (abreviação de ".NET Logging") é uma biblioteca gratuita e de código aberto para a plataforma .NET, projetada para logging flexível e eficiente. Ela permite que desenvolvedores gravem informações de diagnóstico (logs) em vários destinos: arquivos, console, bancos de dados, sockets de rede, sistemas de monitoramento (como Seq, Elasticsearch, Sentry) e muitos outros.

Por que o logging é importante? No desenvolvimento moderno de software, os logs são a "caixa-preta" da aplicação. Sem eles, é impossível entender por que um servidor caiu, onde ocorreu um erro ou quais dados estavam sendo processados no momento da falha. NLog resolve esse problema oferecendo:

  • Flexibilidade de roteamento: Configure diferentes níveis de logging (Trace, Debug, Info, Warn, Error, Fatal) para diferentes partes da aplicação.
  • Alto desempenho: Gravação assíncrona, inicialização preguiçosa (lazy loading) e impacto mínimo na velocidade da aplicação.
  • Extensibilidade: Centenas de targets prontos e a possibilidade de criar os seus próprios.
  • Configuração sem recompilação: Altere as configurações em tempo real via XML, JSON ou código.

NLog é ideal para: aplicações web (ASP.NET Core), utilitários de console, microsserviços, aplicações desktop (WPF/WinForms) e serviços em segundo plano (Windows Services, Worker Services).

2. Instalação

A instalação do NLog é feita através do gerenciador de pacotes NuGet. Execute um dos seguintes comandos no console do gerenciador de pacotes do Visual Studio ou no terminal do .NET CLI:

// Via .NET CLI (recomendado)
dotnet add package NLog

// Via Package Manager Console
Install-Package NLog

// Para ASP.NET Core, também é recomendado instalar a integração:
dotnet add package NLog.Web.AspNetCore

Após a instalação, você precisará criar um arquivo de configuração nlog.config na raiz do projeto (ou configurar o NLog programaticamente).

3. Início rápido — exemplo funcional mínimo

Crie um aplicativo de console e adicione o arquivo nlog.config (clique com o botão direito no projeto → Add → New Item → XML File → nomeie como nlog.config). Insira o seguinte conteúdo:

<?xml version="1.0" encoding="utf-8" ?>
<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">

    <!-- Target: para onde enviar os logs -->
    <targets>
        <target name="console" xsi:type="Console" layout="${longdate} | ${level:uppercase=true} | ${message} ${exception:format=ToString}" />
        <target name="file" xsi:type="File" fileName="${basedir}/logs/app-${shortdate}.log"
                layout="${longdate} | ${level:uppercase=true} | ${logger} | ${message} ${exception:format=ToString}" />
    </targets>

    <!-- Regras de roteamento -->
    <rules>
        <logger name="*" minlevel="Debug" writeTo="console,file" />
    </rules>
</nlog>

Agora, escreva o código no Program.cs:

using NLog;

public class Program
{
    // Criando um logger para a classe atual
    private static readonly Logger Logger = LogManager.GetCurrentClassLogger();

    public static void Main(string[] args)
    {
        Logger.Info("Aplicação iniciada");
        
        try
        {
            var result = Divide(10, 0);
            Logger.Debug($"Resultado: {result}");
        }
        catch (Exception ex)
        {
            Logger.Error(ex, "Erro ao executar divisão");
        }
        
        Logger.Info("Aplicação finalizada");
    }

    static int Divide(int a, int b)
    {
        return a / b;
    }
}

Ao executar o programa, você verá os logs no console e, simultaneamente, eles serão salvos no arquivo logs/app-{data}.log. O NLog cuida de todo o roteamento automaticamente!

4. Níveis de logging

O NLog oferece seis níveis de logging, do mais detalhado ao mais crítico:

  • Trace (0) — Informações de depuração extremamente detalhadas. Use apenas em desenvolvimento.
  • Debug (1) — Informações úteis para depuração em ambientes de desenvolvimento e teste.
  • Info (2) — Mensagens informativas sobre o fluxo normal da aplicação (ex: "Serviço iniciado").
  • Warn (3) — Avisos sobre situações inesperadas que não impedem o funcionamento (ex: "Arquivo não encontrado, usando padrão").
  • Error (4) — Erros que afetam uma operação específica, mas não derrubam a aplicação.
  • Fatal (5) — Erros críticos que forçam o encerramento da aplicação.

Você pode configurar diferentes níveis mínimos para diferentes partes da aplicação. Por exemplo, em produção, é comum usar minlevel="Info" para evitar o excesso de logs de depuração.

5. Targets populares

Os targets definem para onde os logs serão enviados. Aqui estão alguns dos mais usados:

Target Descrição Exemplo de uso
Console Exibe logs no console/terminal Desenvolvimento local, depuração
File Grava logs em arquivos de texto Produção, análise posterior
Database Armazena logs em bancos de dados (SQL Server, PostgreSQL, etc.) Sistemas corporativos, auditoria
Mail Envia logs por e-mail Alertas de erros críticos
Seq Envia logs para o Seq (plataforma de análise de logs) Monitoramento centralizado
ElasticSearch Envia logs para o Elasticsearch (via Kibana) Análise avançada de logs

6. Conclusão

NLog é uma ferramenta indispensável para qualquer desenvolvedor .NET que leva a sério a qualidade e a manutenibilidade do seu software. Com sua configuração flexível, alto desempenho e vasto ecossistema de targets, ela se adapta desde pequenos projetos pessoais até grandes sistemas corporativos.

Comece implementando o exemplo básico deste guia e, gradualmente, explore recursos mais avançados como filtros, layouts personalizados e targets assíncronos. Seu futuro eu (e sua equipe) agradecerão quando precisarem depurar um problema em produção!

Para mais informações, consulte a documentação oficial do NLog.

Recommendations