Esse artigo faz parte da revista .NET Magazine edição 49. Clique aqui para ler todos os artigos desta edição

t">Utilizando o Event Log e contadores de performance

  

No último TechEd (Dezembro/2007) eu assisti a uma ótima palestra do Otávio Pecego Coelho, que falou sobre a “Instrumentação de Aplicações”. Foi baseado nesta palestra que eu me inspirei para escrever este artigo.

A “Instrumentação” de uma aplicação é um termo utilizado quando “preparamos” o nosso aplicativo para que ele nos dê o máximo de informação possível. Informação essa, que é aproveitada para a realização de monitoramento e diagnóstico de problemas, enquanto a aplicação está em execução.

O .NET Framework nos dá uma série de recursos que nos habilitam a instrumentar as nossas aplicações. Vamos ver na prática como fazer isso em uma aplicação ASP.NET.

 

Web Site ASP.NET  

Vamos aproveitar que nesta mesma edição temos um artigo que mostra passo a passo o desenvolvimento de uma aplicação Web, usando apenas as versões gratuitas do Visual Studio e do SQL Server Express.

Iremos utilizar esta aplicação de HelpDesk para entender como instrumentar uma aplicação Web, já desenvolvida. Se você ainda não leu este artigo eu recomendo que o leia antes. Porém você também pode utilizar qualquer outra aplicação ASP.NET que tenha desenvolvido, e esteja no mínimo na versão 2.0 da Framework.

Nos exemplos deste artigo iremos utilizar o Visual Web Developer 2008 Express, a versão gratuita do Visual Studio 2008 para desenvolvimento de aplicações Web, mas você conseguirá chegar aos mesmos resultados utilizando o Visual Studio 2005.

Falando um pouco mais da aplicação que iremos utilizar como exemplo, se você não leu o artigo citado anteriormente, esta é uma aplicação para o controle de um HelpDesk, ou seja, o controle de pendências de uma equipe de suporte e manutenção de softwares.

Com foi dito, esta aplicação foi desenvolvida em ASP.NET com um banco de dados do SQL Server, usando apenas as versões gratuitas do Visual Studio e SQL Server. Nesta aplicação temos apenas três tabelas no database (Customers, Groups e Issues), e fazemos todo o acesso a dados com a utilização de um DataSet Tipado e TableAdapters.

Na Figura 1 você pode ver a aplicação aberta no Visual Web Developer, com todos as suas páginas listadas na Solution Explorer, e suas tabelas no Database Explorer.

 

Figura 1. Aplicação HelpDeskWeb aberta no Visual Web Developer

 

Nota do DevMan

As versões gratuitas, chamadas Express, do Visual Studio 2008 são: o Visual Web Developer (para aplicações Web), Visual C#, Visual VB.NET e Visual C++ (para Aplicações Windows, Conlose ou Class Library).

Estas versões estão repletas de funcionalidades e não deixam nada a desejar. Você pode baixar e instalar qualquer uma destas versões através do seguinte site: http://www.microsoft.com/express/default.aspx.

A dica é: depois da instalação faça o registro do software, não paga nada e você ainda ganha acesso a um conjunto de controles de terceiros e diversos materiais de apoio!

 

Log de Eventos do Windows       

Quando o assunto é instrumentação, o ponto de partida é sem dúvida o Log de Eventos do Windows. Quando ocorre uma exceção na sua aplicação, você registra o erro no Log de Eventos do Windows?

É claro que quando ocorre um erro devemos disparar uma mensagem amigável para o usuário final, mas quem garante que este usuário irá nos reportar a ocorrência do erro? Ou ainda, se reportar, será que irá nos passar todas as informações necessárias para o diagnóstico do problema?

Enfim, é sempre bom manter um registro de todas as ocorrências de exceções da sua aplicação, em algum local que você possa recuperar periodicamente para analisar. E sem dúvida o melhor local para se armazenar este “histórico de ocorrências” é o Log de Eventos do Windows.

Também conhecido como Event Viewer ou Visualizador de Eventos, o Log de eventos do Windows pode ser acessado nas Ferramentas Administrativas do Windows XP (Figura 2), VISTA e é claro no Windows 2003 Server.

Apesar de visualmente possuírem algumas diferenças, o comportamento é basicamente o mesmo entre as três versões do Windows. Nestas figuras você pode observar que qualquer aplicação pode registrar eventos no Event Viewer, e que estes Logs possuem uma série de informações importantes para o diagnóstico do problema.

 

Figura 2. EventViewer no Windows XP

 

Gravando um Erro no Log de Eventos

Antes do .NET esta era realmente uma tarefa chata e trabalhosa, mas com o .NET Framework nós temos todo o acesso ao Log de Eventos através de um modelo de objetos. O namespace que utilizamos para isso é o System.Diagnostics que você pode conferir na Figura 3.

 

Figura 3. Classe EventLog do namespace System.Diagnostics

 

O System.Diagnostics possui uma série de classes que nos ajudam a instrumentar as nossas aplicações. Uma das principais classes, é a que nos dá acesso ao Log de Eventos do Windows, a classe EventLog.

Abra a página Issues.aspx se você estiver utilizando como exemplo a aplicação HelpDeskWeb, ou uma página com code-behind que faça algum tipo de acesso à banco de dados.

Esta página, no seu evento ...

Quer ler esse conteúdo completo? Tenha acesso completo