Introdução
- Definição
Log4net = Log for .NET, é a versão oficial portada do Apache Log4j (biblioteca clássica de logs para Java) para a plataforma .NET, uma biblioteca open source consolidada para gravação de registros de aplicação. - Função principal
Depois de adicionar ao projeto, você não precisa implementar manualmente lógica de leitura e gravação de arquivos. Gera rapidamente logs de aplicação para armazenar informações de execução e pilhas de exceção, facilitando depuração e resolução de problemas em ambiente de produção. - Relação entre os termos
- Log4j: Componente consolidado de registro para ecossistema Java
- Log4net: Versão adaptada do Log4j para C#/.NET
Instalação
Para projetos .NET modernos, prefira instalar via NuGet:
dotnet add package log4net
No Visual Studio, você também pode pesquisar por log4net em “Gerenciar Pacotes NuGet” e instalar com um clique.
No início o log4net era instalado baixando o arquivo dll manualmente. Hoje o NuGet é a abordagem padrão.
Configuração do ambiente Log4Net
log4net funciona em qualquer tipo de projeto: aplicações de console, desktop ou aplicações web.
Fluxo de utilização
Passo 1: editar Web.config e adicionar configuração do log4net
<?xml version="1.0"?>
<configuration>
<configSections>
<!-- Registrar seção de configuração log4net -->
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
</configSections>
<log4net>
<!-- Appender de arquivo com rotação por data -->
<appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
<!-- Caminho para salvar logs: prefira caminho relativo, evite caminho absoluto fixo de pendrive -->
<param name="File" value="logs\\"/>
<!-- Modo de acréscimo: true = adicionar registros, false = limpar arquivo a cada inicialização -->
<param name="AppendToFile" value="true"/>
<!-- Número máximo de arquivos de log mantidos -->
<param name="MaxSizeRollBackups" value="10"/>
<!-- Nome de arquivo fixo false = gerar arquivos diferentes por data -->
<param name="StaticLogFileName" value="false"/>
<!-- Padrão de nomenclatura dos arquivos -->
<param name="DatePattern" value="yyyy-MM-dd".log""/>
<!-- Estratégia de rotação: Date = dividir logs por data -->
<param name="RollingStyle" value="Date"/>
<!-- Modelo de formatação de saída dos logs -->
<layout type="log4net.Layout.PatternLayout">
<param name="ConversionPattern" value="%d [%t] %-5p %c - %m%n" />
<!-- ❗O modelo antigo continha %loggername desnecessário que gerava texto extra no final do log, removido -->
</layout>
</appender>
<!-- Configuração raiz dos logs, válida para toda aplicação -->
<root>
<!-- Nível de log all: exibir todos os níveis; opções: DEBUG/INFO/WARN/ERROR/FATAL/OFF -->
<level value="all"/>
<!-- Associar o appender definido acima -->
<appender-ref ref="RollingLogFileAppender"/>
</root>
</log4net>
</configuration>Code language: HTML, XML (xml)
- Não use caminhos absolutos fixos como
G:\xxx, eles param de funcionar no servidor. Use o caminho relativologs\\; - No ambiente de produção ajuste o parâmetro
levelparaINFOouERROR, para evitar que muitos logs DEBUG consumam espaço em disco.
Passo 2: inicializar Log4Net de forma global
Adicione o código de inicialização dentro do método Application_Start no arquivo Global.asax, a configuração é carregada na inicialização da aplicação
protected void Application_Start(object sender, EventArgs e)
{
// Inicializar log4net, ler configuração do Web.config
log4net.Config.XmlConfigurator.Configure();
}Code language: JavaScript (javascript)
Aviso: sem essa linha nenhum arquivo de log será gerado mesmo chamando os métodos de gravação. Esse é um erro muito comum.
Passo 3: obter o Logger e gravar logs nas páginas
Escreva o código de chamada em Default.aspx.cs. O código pode ser colocado em qualquer lugar, esse exemplo demonstra uma página simples.
using log4net;
public partial class _Default : System.Web.UI.Page
{
// Obter instância de log, a string é o nome personalizado do logger
public static readonly ILog log = LogManager.GetLogger("logger-name");
protected void Page_Load(object sender, EventArgs e)
{
log.Info("Registro comum");
log.Error("Registro de erro");
// Outros níveis suportados
// log.Debug("Registro de depuração");
// log.Warn("Registro de aviso");
// log.Fatal("Registro de erro fatal");
}
}
Boa prática: declare ILog como static readonly para evitar criar instâncias repetidas e melhorar desempenho.
Resultado da execução
- Após executar a aplicação, a pasta
logsé criada automaticamente na raiz do site; - São gerados arquivos de log com o padrão de nome
2026-08-04.log; - Exemplo de conteúdo dentro do arquivo:
2026-08-04 15:30:22,123 [6] INFO logger-name - Registro comum
2026-08-04 15:30:22,129 [6] ERROR logger-name - Registro de erroCode language: CSS (css)
Observações complementares
- Além de gravar em arquivos, o Log4Net também suporta saída para console, banco de dados e e‑mail;
- Para projetos novos compare
NLog/Serilog: eles têm melhor suporte para .NET Core/.NET 5+. O Log4net é usado principalmente para manter projetos antigos WebForm e WinForms.
Introdução e instalação