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.