Seria interessante no momento em que o erro ocorrer, automaticamente fosse gerado um arquivo de Log no sistema, ou um registro do erro no próprio Windows, ou até mesmo o envio automático de um e-mail, informando as informações sobre o erro? Justamente para maior controle sobre os erros do sistema, ajudando a uma eventual correção ou melhoria. Acredito que a resposta seja SIM.

Pensando nisto resolvi criar este artigo, que tem como objetivo exemplificar e demonstrar como podemos catalogar os erros ocorridos no sistema e automaticamente gerar um Log com os detalhes do mesmo e enviar um e-mail com tais informações. Para isto irei utilizar uma biblioteca de código livre chamado NLog.

O que é o NLog?

O NLog é uma biblioteca de código livre, onde permite processar mensagens de diagnóstico emitidas de qualquer linguagem . NET (C# ou Visual Basic).

Para mais informações e download do NLog acesse http://nlog-project.org/

Catalogando e gerando o Log

A primeira coisa a se fazer para que seja possível catalogar os erros, é justamente referenciar a DLL do NLog. Em seguida devemos criar dois diretórios na raiz de nosso projeto, um chamado “ClassesLog” e outro chamado “Logs”.

No diretório “ClassesLog” iremos colocar todas as classes e interfaces de apoio referentes ao NLog, já na “Logs” será armazenado os logs com as informações sobre os erros gerados pelo sistema.

As classes e interfaces necessárias são:

  • ILogger.cs
  • LogUtility.cs
  • NLogLogger.cs
  • Log.cs

Conteúdo das Classes e Interfaces de apoio

  • Interface ILogger -a interface destrincha as assinaturas dos métodos, que no caso são os tipos de ações de eventos do sistema, onde será possível catalogar. São eles, informativos, warnings, erros e erros fatais.
  • Classe NLogLogger -Esta classe efetivamente implementa a interface ILogger. Ao enviar a Exception como parâmetro nos métodos Error e Fatal, é chamado método BuildExceptionMessage localizado na classe LogUtility.
  • Classe LogUtility -Classe de apoio, realiza o tratamento da Exception enviada como parâmetro nos métodos da classe NLogLogger. É responsável por obter a URL do erro, a mensagem juntamente com a origem, a StackTrace e o método relacionado ao erro gerado.
  • Classe Log -Esta classe efetivamente retorna uma instancia da classe NLogLogger.

Configurando o NLog

Para realizarmos a configuração final do NLog é muito simples, configure o arquivo de configuração, chamado NLog.config, para o catálogo dos erros gerados, a geração do evento do erro no Windows e o envio automático de e-mail com as informações do erro. Atente-se que, o arquivo NLog.config deve ficar na raiz do projeto.

Agora sim, basta colocarmos o seguinte código ClassesLog.Log.GetLogger().Error(error); em nosso Cath do método ese rodarmos nossa aplicação de teste note que, é catalogado o erro, enviado o e-mail e criado o evento no Windows.