Saída de logs no console

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.

  1. Criar um novo projeto de aplicação de console no Visual Studio
  2. Adicionar o arquivo de configuração App.config ao projeto
  3. Incluir o log4net (instalar via NuGet / referenciar log4net.dll)
  4. Escrever as configurações do log4net dentro do arquivo App.config
  5. 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

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *