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
Esta página, no seu evento ...