NLog em C# (Como funciona para desenvolvedores)
O registro de logs é um aspecto essencial do desenvolvimento de software. Isso ajuda os desenvolvedores a monitorar o comportamento de seus aplicativos, solucionar problemas e obter informações sobre o desempenho de seu código em diversos ambientes. NLog é um framework de registro de logs popular para C# que facilita a implementação de um registro de logs robusto e flexível em suas aplicações. Neste guia e tutorial completo, exploraremos o mundo do NLog em C#.
O que é NLog?
NLog é uma biblioteca de registro de logs gratuita e de código aberto para aplicações .NET e .NET Core . Ele oferece uma maneira flexível e altamente configurável de registrar mensagens em seu aplicativo. O NLog é uma plataforma de registro de logs gratuita e amplamente utilizada no ecossistema .NET devido ao seu desempenho, extensibilidade e facilidade de uso.
Introdução ao NLog
Podemos usar o NLog em aplicações Web ASP.NET , APIs Web ASP.NET , aplicações Windows Forms, aplicações ASP.NET MVC ou qualquer outro tipo, de acordo com as nossas necessidades. Usaremos o aplicativo de console para demonstrar todos os casos de uso.
Instale o pacote NuGet NLog.
Para começar a usar o NLog, você precisará instalar o pacote NuGet do NLog em seu projeto. Você pode fazer isso através do Gerenciador de Pacotes NuGet no Visual Studio, seguindo os passos:
- No menu "Ferramentas", selecione "Gerenciador de Pacotes NuGet " e, em seguida, escolha "Gerenciar Pacotes NuGet para a Solução".
- Ou, clique com o botão direito do mouse no seu projeto no Solution Explorer, selecione "Gerenciar Pacotes NuGet " e escolha "Procurar".
- Na janela do Gerenciador de Pacotes NuGet , clique na guia "Procurar" e, na caixa de pesquisa, digite "NLog".
- Você deverá ver o pacote NLog nos resultados da pesquisa. Clique para selecionar.
- No lado direito da janela do Gerenciador de Pacotes NuGet , há uma lista dos projetos em sua solução. Selecione o(s) projeto(s) onde deseja instalar o NLog.
- Selecione a versão desejada do pacote NLog na lista suspensa de versões. Você pode selecionar a versão estável mais recente ou uma versão específica, se necessário.
- Após selecionar o(s) projeto(s) e a versão, clique no botão "Instalar" para iniciar o processo de instalação.
O gerenciador de pacotes NuGet fará o download e instalará o NLog e quaisquer dependências. Você poderá acompanhar o progresso na janela de saída.
O NLog foi instalado com sucesso em seu projeto e você já pode começar a usá-lo para registrar logs em seu código C#.
Criar arquivo de configuração do NLog
Para criar um arquivo de configuração do NLog (normalmente chamado nlog.config), você pode seguir estes passos. Este arquivo de configuração especificará como o NLog deve se comportar em sua aplicação, incluindo destinos de log, renderizadores de layout e regras.
No seu projeto, clique com o botão direito do mouse no projeto ou na pasta desejada onde você quer criar o arquivo de configuração.
- Selecione "Adicionar" > "Novo item..."
- Na caixa de diálogo "Adicionar novo item", procure por "Arquivo XML" ou "XML" e selecione-o.
-
Dê o nome de nlog.config ao arquivo e clique no botão "Adicionar".

- Abra o arquivo nlog.config recém-criado em um editor de texto ou editor XML.
- Adicione a seguinte configuração no arquivo NLog.XML. Abaixo está um exemplo básico de uma configuração do NLog que registra mensagens em um destino Console. Você pode personalizar este arquivo de configuração para atender às suas necessidades:
Arquivo de configuração
<?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">
<targets>
<target name="console" xsi:type="Console" layout="${longdate}|${message}"/>
</targets>
<rules>
<logger name="*" minlevel="Debug" writeTo="console" />
</rules>
</nlog>
<?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">
<targets>
<target name="console" xsi:type="Console" layout="${longdate}|${message}"/>
</targets>
<rules>
<logger name="*" minlevel="Debug" writeTo="console" />
</rules>
</nlog>
No seu código C#, certifique-se de carregar a configuração do NLog a partir do arquivo nlog.config. Normalmente, isso é feito no código de inicialização do aplicativo, como em um arquivo Startup.cs do ASP.NET Core (para versões do .NET iguais ou anteriores ao .NET 5), um arquivo program.cs (for .NET 6 ou posterior) ou o método Main de um aplicativo de console.
using NLog;
internal class Program
{
// Create an instance of the Logger
private static Logger logger = LogManager.GetCurrentClassLogger();
static void Main(string[] args)
{
// Log a debug message
logger.Debug("This is a Debug Message");
// Pause the console for viewing output
Console.Read();
}
}
using NLog;
internal class Program
{
// Create an instance of the Logger
private static Logger logger = LogManager.GetCurrentClassLogger();
static void Main(string[] args)
{
// Log a debug message
logger.Debug("This is a Debug Message");
// Pause the console for viewing output
Console.Read();
}
}
Imports NLog
Friend Class Program
' Create an instance of the Logger
Private Shared logger As Logger = LogManager.GetCurrentClassLogger()
Shared Sub Main(ByVal args() As String)
' Log a debug message
logger.Debug("This is a Debug Message")
' Pause the console for viewing output
Console.Read()
End Sub
End Class
O resultado do programa acima é o seguinte:

Neste exemplo, criamos uma instância da classe Logger e a utilizamos para registrar mensagens no nível de depuração. Vamos explorar o nível de rastreamento suportado pelo NLog.
Níveis de registro
O NLog suporta vários níveis de registro, cada um com sua própria importância:
- Traço: O nível mais detalhado, normalmente usado para fins de diagnóstico.
- Depuração: Utilizada para obter informações de depuração que podem ser úteis durante o desenvolvimento.
- Informações: Informações gerais sobre o funcionamento do aplicativo.
- Aviso: Indica um problema potencial que não interrompe o funcionamento da aplicação.
- Erro: Indica uma falha que deve ser investigada, mas que não necessariamente causa o travamento do aplicativo.
- Fatal: Indica uma falha crítica que deve ser resolvida imediatamente.
Ao categorizar as mensagens de log nesses níveis, você pode filtrá-las e priorizá-las facilmente com base na sua gravidade.
Defina minlevel="Trace" na tag rules do seu arquivo nLog.Config, conforme mostrado abaixo.
<rules>
<logger name="*" minlevel="Trace" writeTo="console" />
</rules>
<rules>
<logger name="*" minlevel="Trace" writeTo="console" />
</rules>
Vamos escrever um código para registrar mensagens de todos os níveis de rastreamento.
using NLog;
internal class Program
{
// Create an instance of the Logger
private static Logger logger = LogManager.GetCurrentClassLogger();
static void Main(string[] args)
{
// Log messages of different tracking levels
logger.Trace("This is a Trace Message");
logger.Debug("This is a Debug Message");
logger.Info("This is an Info Message");
logger.Warn("This is a Warning Message");
logger.Error("This is an Error Message");
logger.Fatal("This is a Fatal Message");
// Pause the console for viewing output
Console.Read();
}
}
using NLog;
internal class Program
{
// Create an instance of the Logger
private static Logger logger = LogManager.GetCurrentClassLogger();
static void Main(string[] args)
{
// Log messages of different tracking levels
logger.Trace("This is a Trace Message");
logger.Debug("This is a Debug Message");
logger.Info("This is an Info Message");
logger.Warn("This is a Warning Message");
logger.Error("This is an Error Message");
logger.Fatal("This is a Fatal Message");
// Pause the console for viewing output
Console.Read();
}
}
Imports NLog
Friend Class Program
' Create an instance of the Logger
Private Shared logger As Logger = LogManager.GetCurrentClassLogger()
Shared Sub Main(ByVal args() As String)
' Log messages of different tracking levels
logger.Trace("This is a Trace Message")
logger.Debug("This is a Debug Message")
logger.Info("This is an Info Message")
logger.Warn("This is a Warning Message")
logger.Error("This is an Error Message")
logger.Fatal("This is a Fatal Message")
' Pause the console for viewing output
Console.Read()
End Sub
End Class
Nosso programa registrou mensagens no console, conforme mostrado abaixo.

Agora, demonstramos o exemplo de registro de mensagens no Console. Agora vamos configurar um destino NLog para registrar mensagens no arquivo.
Mensagem de registro no arquivo
Precisamos definir um destino de arquivo em vez de um destino de console em nosso arquivo de configuração para o registro em arquivo.
<targets>
<target xsi:type="File" name="fileTarget" fileName="D:\Logs\mylog.txt" layout="${longdate} ${level:uppercase=true} ${message}" />
</targets>
<rules>
<logger name="*" minlevel="Trace" writeTo="fileTarget" />
</rules>
<targets>
<target xsi:type="File" name="fileTarget" fileName="D:\Logs\mylog.txt" layout="${longdate} ${level:uppercase=true} ${message}" />
</targets>
<rules>
<logger name="*" minlevel="Trace" writeTo="fileTarget" />
</rules>
Agora, execute o programa para registrar as mensagens em um arquivo.

Alvos de registro
O NLog suporta vários destinos de saída de logs, permitindo que você escolha onde suas mensagens de log devem ser armazenadas. Alguns alvos comuns incluem:
- Arquivo: Registra mensagens em um ou mais arquivos.
- Console: Registra mensagens no console.
- Banco de dados: Registra mensagens em uma tabela de banco de dados (SQL Server, MySQL, Oracle, PostgreSQL, etc.).
- E-mail: Envia mensagens de registro por e-mail.
- Log de Eventos: Registra mensagens no Log de Eventos do Windows.
- Destinos personalizados: Você pode criar destinos de registro personalizados para atender às suas necessidades específicas.
Você pode configurar o NLog para usar um ou mais destinos simultaneamente.
Apresentando o IronPDF
Saiba mais sobre o IronPDF , uma poderosa biblioteca .NET que simplifica o manuseio de PDFs em aplicações C# e VB .NET . Oferece recursos robustos para criar, editar e manipular documentos PDF, além de converter conteúdo HTML para o formato PDF, tornando-se uma ferramenta essencial para desenvolvedores em uma ampla gama de setores, incluindo desenvolvimento web, geração de relatórios e gerenciamento de documentos.
O grande diferencial do IronPDF é sua função de conversão de HTML para PDF , que preserva seus layouts e estilos. Ele gera PDFs a partir de conteúdo da web, sendo ideal para relatórios, faturas e documentação. Arquivos HTML, URLs e strings HTML podem ser facilmente convertidos em PDFs.
using IronPdf;
class Program
{
static void Main(string[] args)
{
var renderer = new ChromePdfRenderer();
// 1. Convert HTML String to PDF
var htmlContent = "<h1>Hello, IronPDF!</h1><p>This is a PDF from an HTML string.</p>";
var pdfFromHtmlString = renderer.RenderHtmlAsPdf(htmlContent);
pdfFromHtmlString.SaveAs("HTMLStringToPDF.pdf");
// 2. Convert HTML File to PDF
var htmlFilePath = "path_to_your_html_file.html"; // Specify the path to your HTML file
var pdfFromHtmlFile = renderer.RenderHtmlFileAsPdf(htmlFilePath);
pdfFromHtmlFile.SaveAs("HTMLFileToPDF.pdf");
// 3. Convert URL to PDF
var url = "http://ironpdf.com"; // Specify the URL
var pdfFromUrl = renderer.RenderUrlAsPdf(url);
pdfFromUrl.SaveAs("URLToPDF.pdf");
}
}
using IronPdf;
class Program
{
static void Main(string[] args)
{
var renderer = new ChromePdfRenderer();
// 1. Convert HTML String to PDF
var htmlContent = "<h1>Hello, IronPDF!</h1><p>This is a PDF from an HTML string.</p>";
var pdfFromHtmlString = renderer.RenderHtmlAsPdf(htmlContent);
pdfFromHtmlString.SaveAs("HTMLStringToPDF.pdf");
// 2. Convert HTML File to PDF
var htmlFilePath = "path_to_your_html_file.html"; // Specify the path to your HTML file
var pdfFromHtmlFile = renderer.RenderHtmlFileAsPdf(htmlFilePath);
pdfFromHtmlFile.SaveAs("HTMLFileToPDF.pdf");
// 3. Convert URL to PDF
var url = "http://ironpdf.com"; // Specify the URL
var pdfFromUrl = renderer.RenderUrlAsPdf(url);
pdfFromUrl.SaveAs("URLToPDF.pdf");
}
}
Imports IronPdf
Friend Class Program
Shared Sub Main(ByVal args() As String)
Dim renderer = New ChromePdfRenderer()
' 1. Convert HTML String to PDF
Dim htmlContent = "<h1>Hello, IronPDF!</h1><p>This is a PDF from an HTML string.</p>"
Dim pdfFromHtmlString = renderer.RenderHtmlAsPdf(htmlContent)
pdfFromHtmlString.SaveAs("HTMLStringToPDF.pdf")
' 2. Convert HTML File to PDF
Dim htmlFilePath = "path_to_your_html_file.html" ' Specify the path to your HTML file
Dim pdfFromHtmlFile = renderer.RenderHtmlFileAsPdf(htmlFilePath)
pdfFromHtmlFile.SaveAs("HTMLFileToPDF.pdf")
' 3. Convert URL to PDF
Dim url = "http://ironpdf.com" ' Specify the URL
Dim pdfFromUrl = renderer.RenderUrlAsPdf(url)
pdfFromUrl.SaveAs("URLToPDF.pdf")
End Sub
End Class
Vamos gerar um PDF com registro de logs.
Geração de PDF com registro de logs
O primeiro passo é instalar a biblioteca IronPDF em nosso projeto. Podemos fazer isso usando o Gerenciador de Pacotes NuGet no Visual Studio ou através da CLI do NuGet . Abra seu projeto e digite o seguinte comando no Console do Gerenciador de Pacotes.
Install-Package IronPdf
Este comando instalará o IronPDF com todas as dependências necessárias em nosso projeto.
Escreva o seguinte código para gerar um arquivo PDF a partir de um arquivo HTML com registro de logs.
using NLog;
using IronPdf;
internal class Program
{
// Create an instance of the Logger
private static Logger logger = LogManager.GetCurrentClassLogger();
static void Main(string[] args)
{
logger.Info("Initializing Chrome PDF Renderer");
ChromePdfRenderer renderer = new ChromePdfRenderer();
logger.Info("Creating PDF From HTML String");
var pdf = renderer.RenderHtmlAsPdf("<h1>This is my Sample PDF<h1>");
logger.Info("Saving PDF File");
pdf.SaveAs(@"D:\myPDF.pdf");
}
}
using NLog;
using IronPdf;
internal class Program
{
// Create an instance of the Logger
private static Logger logger = LogManager.GetCurrentClassLogger();
static void Main(string[] args)
{
logger.Info("Initializing Chrome PDF Renderer");
ChromePdfRenderer renderer = new ChromePdfRenderer();
logger.Info("Creating PDF From HTML String");
var pdf = renderer.RenderHtmlAsPdf("<h1>This is my Sample PDF<h1>");
logger.Info("Saving PDF File");
pdf.SaveAs(@"D:\myPDF.pdf");
}
}
Imports NLog
Imports IronPdf
Friend Class Program
' Create an instance of the Logger
Private Shared logger As Logger = LogManager.GetCurrentClassLogger()
Shared Sub Main(ByVal args() As String)
logger.Info("Initializing Chrome PDF Renderer")
Dim renderer As New ChromePdfRenderer()
logger.Info("Creating PDF From HTML String")
Dim pdf = renderer.RenderHtmlAsPdf("<h1>This is my Sample PDF<h1>")
logger.Info("Saving PDF File")
pdf.SaveAs("D:\myPDF.pdf")
End Sub
End Class
O trecho de código acima criará um arquivo PDF com uma mensagem registrada no arquivo, conforme mostrado abaixo.
Arquivo de registro e PDF

Conclusão
Em conclusão, o NLog se consolidou como uma ferramenta essencial para o registro eficaz de logs em aplicações C#, oferecendo aos desenvolvedores uma estrutura robusta para capturar, categorizar e gerenciar dados de log. Sua flexibilidade e facilidade de uso fazem dele a escolha ideal para necessidades de registro em diversos domínios. Além disso, quando combinado com bibliotecas complementares como o IronPDF, que simplifica a geração e manipulação de PDFs em aplicações .NET , os desenvolvedores podem ampliar suas capacidades de gerenciamento para abranger a criação de logs e relatórios baseados em PDF. Vale mencionar que o IronPDF oferece um período de teste IronPDF para que você possa experimentar seus recursos. Se atender às suas necessidades, você pode optar por uma licença comercial do IronPDF , que oferece acesso contínuo aos recursos do IronPDF com benefícios adicionais e suporte para integração perfeita em seus projetos, especialmente para funcionalidades relacionadas a PDFs.
Ao combinar o poder do NLog e do IronPDF , os desenvolvedores podem não apenas obter insights sobre o comportamento de seus aplicativos, mas também aprimorar seus processos de geração de relatórios e gerenciamento de documentos, garantindo que seu software permaneça eficiente, de fácil manutenção e com um registro estruturado e bem documentado.
Perguntas frequentes
Como o NLog aprimora o registro de logs em aplicações C#?
O NLog oferece uma estrutura de registro de logs robusta e flexível para aplicações C#. Ele permite que os desenvolvedores implementem facilmente o registro de logs, definindo destinos e regras de log em um arquivo de configuração, com suporte a vários níveis de log, como Trace, Debug, Info, Warn, Error e Fatal.
Qual é o processo para configurar o NLog em uma aplicação .NET?
Para configurar o NLog em uma aplicação .NET, você precisa instalar o pacote NuGet do NLog e configurar os destinos e regras de registro no arquivo nlog.config. Essa configuração permite especificar para onde os registros devem ser direcionados, como arquivos, consoles, bancos de dados ou e-mails.
Como posso registrar mensagens em um banco de dados usando o NLog?
Para registrar mensagens em um banco de dados usando o NLog, você precisa configurar um destino de banco de dados no arquivo nlog.config. Você especificará a string de conexão e os detalhes necessários da tabela ou procedimento armazenado para as entradas de log.
O NLog pode ser usado para enviar mensagens de log por e-mail?
Sim, o NLog pode enviar mensagens de log por e-mail configurando um destinatário no arquivo nlog.config. Você precisará fornecer os detalhes do servidor SMTP, os endereços de e-mail dos destinatários e outras configurações de e-mail.
Quais são os benefícios de usar o IronPDF para geração de PDFs em .NET?
IronPDF é uma poderosa biblioteca .NET que simplifica a geração, edição e conversão de PDFs. Ela oferece suporte à conversão de HTML para PDF, permitindo que desenvolvedores gerem PDFs a partir de strings HTML, arquivos ou URLs, aprimorando os processos de geração de relatórios e gerenciamento de documentos.
Como posso integrar o registro de logs com a geração de PDFs em uma aplicação C#?
Você pode integrar o NLog com o IronPDF em uma aplicação C# usando o NLog para registrar eventos da aplicação e o IronPDF para gerar PDFs. Essa combinação permite criar relatórios em PDF detalhados que incluem informações de registro.
Quais são algumas etapas comuns de solução de problemas para questões de configuração do NLog?
As etapas comuns de solução de problemas para questões de configuração do NLog incluem verificar se há erros de sintaxe no arquivo nlog.config, garantir que os caminhos de arquivo e as permissões para os destinos de log estejam corretos e verificar se há exceções no aplicativo que possam afetar o registro de logs.
Como posso testar as funcionalidades do IronPDF antes de comprá-lo?
O IronPDF oferece um período de avaliação gratuito que permite aos desenvolvedores testar seus recursos. Esse período de avaliação proporciona a oportunidade de avaliar as capacidades do IronPDF para geração, edição e conversão de PDFs antes de optar por uma licença comercial.




