quinta-feira, 8 de abril de 2010

Log com .NET Enterprise Library

Uma solução de log para a plataforma .NET é o Logging Application Block, que pertence à Enterprise Library (também conhecido como EntLib).

Além dessa biblioteca facilitar o uso de log, ela gera saídas que podem ser direcionadas para vários destinos. Algumas das possibilidades são:

  • O log de eventos do Windows
  • Uma mensagem de e-mail
  • Um banco de dados
  • Uma fila de mensagem
  • Um arquivo texto
  • Um evento WMI

Para o código a maneira como a informação será logada fica transparente já que isso é configurado no App.config ou Web.config.

Os principais elementos configurados são: 

  • Formatters: definem o formato do texto a ser logado; 
  • Trace Listeners: definem o destino do log; 
  • Category Sources: permitem classificar os Trace Listeners em categorias.

Para vermos algumas funcionalidades do Logging do EntLib vamos criar uma aplicação para 'logar' informações a respeito de erros em processos no log de eventos do Windows. Vamos criar uma categoria para os logs de erro nos processos chamada “MyErro”.

 Essa categoria vai possuir um Trace Listeners para o log de eventos do Windows, para simplificar vamos incluir apenas um Trace Listener, mas é possível adicionar outros como, por exemplo, um para log em arquivos, em banco de dados entre outros.

Para isso:
  • No Visual Studio, crie um novo projeto do tipo Console Application.
  • No projeto, adicione um novo item do tipo Application Configuration File.
  • No Solution Explorer clique com o botão direito no App.config e selecione Edit Enterprise Library Configuration.


  • Na tela que abriu, clique com o botão direito no item correspondente ao App.config e selecione New > Logging Application Block para criar um novo nível na árvore chamado Logging Application Block.

  • Caso não exista nenhum sub item dentro do item "Formatters", clique com o botão direito em "Formatters" e escolha New > Text Formatter .
  • Na janela Properties mude o nome para “txtFormatterTeste” e clique no botão “…” do Template. No Template Editor, mude o texto para “{timestamp} {severity} – Erro no processo {processName}”. Agora temos um Formatter que irá gerar mensagens do tipo “08/04/2010 14:13:21 Error – Erro no processo umProcesso”, caso queira mais informações basta adicionar as demais tags. Por padrão, ao criar um Text Formatter a mensagem inicial contém todas as tags .


  • Crie um Trace Listener do tipo Formatted EventLog Trace Listener. Na janela Properties mude o seu Formatter para 'txtFormatterTeste'.
  • Em Category Sources clique com o botão direito e vá em New > Category e renomeie-a para “MyErro”.
  • Clique com o botão direito na categoria “MyErro” e vá em New > Trace Listener Reference. Altere ReferencedTraceListener para Formatted EventLog TraceListener criado por você.
  • Salve o arquivo App.config que você está editando.
  • No Solution Explorer, adicione uma referência ao componente .NET chamado “Enterprise Library Logging Application Block”.
  • Edite o código de sua classe para esse (cuide o namespace e o nome da classe):

using System;

using Microsoft.Practices.EnterpriseLibrary.Logging;
using System.Diagnostics;

namespace EntLibTeste
{
    class Program
    {
        static void Main(string[] args)
        {
            LogEntry logEntry = new LogEntry();
            logEntry.Severity = TraceEventType.Error;
            logEntry.ProcessName = "umProcesso";
            logEntry.Categories.Add("MyErro");

            Logger.Write(logEntry);
        }
    }
}

  • Execute a classe e você deverá ver a mensagem esperada no arquivo de log assim como no Event Viewer, dentro de “Application Log”.

Para encontrar mais detalhes e outras informações sobre o Logging Application Block visite a página MSDN Enterprise Library - Logging  .

Um comentário: