Implementa a saída de logs para aplicações de console, com suporte a cores de texto e de fundo personalizadas por nível de log. Deixa o processo de depuração muito mais intuitivo.
- Criar um novo projeto de aplicação de console no Visual Studio
- Adicionar o arquivo de configuração
App.configao projeto - Incluir o log4net (instalar via NuGet / referenciar log4net.dll)
- Escrever as configurações do log4net dentro do arquivo
App.config - Inicializar o log4net no código e emitir os logs
Nos logs de console você pode definir cores de primeiro plano e fundo para cada nível, facilitando a diferenciação dos tipos de mensagens.
Configuração App.config
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<configSections>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
</configSections>
<log4net>
<!-- Anexador de saída colorida para console ColoredConsoleAppender -->
<appender name="ColoredConsoleAppender" type="log4net.Appender.ColoredConsoleAppender">
<!-- Esquema de cores para nível ERROR -->
<mapping>
<level value="ERROR" />
<foreColor value="White" />
<backColor value="Red, HighIntensity" />
</mapping>
<!-- Esquema de cores para nível DEBUG -->
<mapping>
<level value="DEBUG" />
<backColor value="Green" />
</mapping>
<!-- Esquema de cores para nível INFO -->
<mapping>
<level value="Info" />
<backColor value="Yellow" />
</mapping>
<!-- Você pode adicionar mapeamentos de cor para WARN e FATAL conforme necessidade -->
<!-- Modelo de formatação da saída de log -->
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" />
</layout>
</appender>
<!-- Logger raiz, habilita saída no console -->
<root>
<level value="All" />
<appender-ref ref="ColoredConsoleAppender" />
</root>
</log4net>
</configuration>Code language: HTML, XML (xml)
Explicação dos placeholders de formato
%date: Data e hora do log[%thread]: Identificador da thread%-5level: Nível do log (alinhado com largura de 5 caracteres)%logger: Nome da classe responsável pelo log%message: Conteúdo principal da mensagem%newline: Quebra de linha automática
Program.cs
using System;
using log4net;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
// Carregar e inicializar as configurações do log4net
log4net.Config.XmlConfigurator.Configure();
// Obter instância do logger, passando o tipo da classe atual para rastrear a origem do log
ILog logger = LogManager.GetLogger(typeof(Program));
// Emitir logs de todos os níveis
logger.Info("Log comum");
logger.Error("Log de erro");
logger.Debug("Mensagem de depuração");
logger.Fatal("Erro fatal");
logger.Warn("Mensagem de aviso");
Console.ReadKey();
}
}
}Code language: JavaScript (javascript)
Resultado da execução
O console renderiza automaticamente uma cor de fundo diferente para cada nível de log:
- INFO: Fundo amarelo
- DEBUG: Fundo verde
- ERROR / FATAL: Fundo vermelho brilhante
- WARN: Fundo amarelo
Exemplo de saída:
2017-03-21 20:35:31,550 [9] INFO ConsoleApplication1.Program [(null)] - Log comum
2017-03-21 20:35:31,592 [9] ERROR ConsoleApplication1.Program [(null)] - Log de erro
2017-03-21 20:35:31,592 [9] DEBUG ConsoleApplication1.Program [(null)] - Mensagem de depuração
2017-03-21 20:35:31,593 [9] FATAL ConsoleApplication1.Program [(null)] - Erro fatal
2017-03-21 20:35:31,594 [9] WARN ConsoleApplication1.Program [(null)] - Mensagem de avisoCode language: CSS (css)

Saída de logs no console