Gerando um Log de erros em ASP.NET

Veremos neste artigo como desenvolver um log de erros para nossos aplicativos web, utilizando as informações apresentadas na página de erro padrão do ASP.NET.

Os erros no ASP.NET

Quando acontece um erro em tempo de execução (quando rodamos a nossa aplicação), o ASP.NET gera uma página de erro padrão exibindo informações sobre a exceção e onde ela ocorreu no código (somente na máquina de desenvolvimento). Nós podemos com uma técnica rápida e bastante fácil, criar no servidor um "registro de erros" gerados pela nossa aplicação - que nós rezamos para que fique sempre vazia!

O Framework nos disponibiliza o namespace System.Diagnostics que provê classes que nos permitem interagir com processos do sistema, eventos de log, e indicadores de desempenho. É neste namespace que está implementada a classe - EventLog para ser mais específico - que usaremos para criar um evento de log.


Figura 1 - Página que irá gerar um erro na aplicação.

Ferindo e curando

Para podermos testar os registros de erro, vamos criar uma aplicação e sobre a página colocar um Button (figura1). No evento OnClick do botão nós faremos um request a uma página inexistente; a nossa aplicação irá gerar um erro (The resource not found - recurso não encontrado), que será armazenado no log. O código necessário para criação do log, será implementado no evento Application_Error do objeto Global.asax. O evento Application_Error é disparado sempre que uma exceção é gerada pela aplicação.

No Delphi, selecione o arquivo Global.asax na janela Project Manager, e digite o seguinte bloco de código no evento Application_Error:

procedure TGlobal.Application_Error(sender: System.Object; e: EventArgs);
var
 DescErro: string;
 LogName: string;
 Log: EventLog;
begin
 // Resgata a última mensagem de erro.

 DescErro := 'Descrição do erro: ' + Server.GetLastError.ToString;
 LogName := 'Segurança';
 //Verifica a existência desta chave "Segurança"
 //caso não a encontre criará uma com este nome.
 
if (not EventLog.Exists(LogName)) then
   EventLog.CreateEventSource(LogName,LogName);
 //Cria uma nova entrada no log.
 Log := EventLog.Create;
 Log.Source := LogName;
 Log.WriteEntry(DescErro,EventLogEntryType.Error);
 Log.Close;
end;

Nota Acrescente na claúsula uses a referência ao namespace System.Diagnostics.


Figura 2 -Visualizando o log de erros da nossa aplicação


Quando você executar a aplicação e clicar no botão da página (programado para gerar um erro), criaremos um arquivo de log com as informações deste erro na máquina servidora. Para navegar até os logs de erro, navegue até a janela Visualizar eventos do Windows (figura2).


Figura 3 - Propriedades do evento

Conclusão

Implementar esta técnica em seus aplicativos é bastante fácil e rápido - bem melhor do que criar logs em arquivos de texto, hein?. Até a próxima!



Laércio Santos de Queiroz, laercio_queiroz@hotmail.com atua a vários anos como desenvolvedor, especializado em tecnologias relacionadas a web e desenvolvimento multicamadas. Atualmente presta consultoria e treinamentos avançados,sobre desenvolvimento de sistemas e bancos de dados pelo Centro Avançado de Informática, em Salvador.Além disso, possui sólidos conhecimentos em várias linguagens e metodologias de programação.Quando não está programando, gosta de tocar bateria, fotografar e de ler bons livros.