Publicado por: Luciano Carvalho | 25 25UTC Junho 25UTC 2008

Monitorando a aplicação com Logs de Eventos

Não importa o quanto bem codificada e testada é uma aplicação, é muito provável que ela tenha erros ou algum comportamento inesperado. Muitas vezes, os usuários reportam erros ao desenvolvedor em uma linguagem a qual fica difícil saber o que acontece com o sistema.

Versões recentes do Windows trazem recursos úteis para sabermos o que acontece nos sistemas. Os eventos de log são úteis para que o desenvolvedor registre certos aspectos do estado das aplicações, incluindo erros bastante sérios.

Porém, o uso de Eventos de Log traz algumas desvantagens:

ü  Objetos EventLog, incluindo EventLogEntry e EventLogEntryCollection nunca devem ser passados a códigos menos confiáveis. É importante estar ciente do contexto em que esses objetos serão executados.

ü  A classe EventLogPermission é requerida em muitas ações nas quais há uso da classe EventLog. Conceder essa permissão a códigos parcialmente confiáveis pode abrir sérias vulnerabilidades de segurança.

ü  Ler e registrar eventos consome recursos relativamente grandes em termos de utilização do disco, processador e outros recursos. Objetos EventLog devem ser usados quando necessários.

Criando e deletando um Log de Eventos

                Para criar um log de eventos, o Framework .Net fornece a classe EventLog. Para usá-la, a propriedade Source precisa ser especificada e uma mensagem precisa ser registrada, como mostra o código seguinte, que requer uma referencia ao namespace System.Diagnostics:

public static void CriandoEventoLog()

{

   EventLog MeuLog = new EventLog(“LogEventoTeste”);

   MeuLog.Source = “LogEventoTeste”;

   MeuLog.WriteEntry(“CriaEventoLog chamado”,   EventLogEntryType.Information);  

}

Depois de criar um objeto EventLog e especificar a propriedade Source, informações sobre o objeto podem ser vistas na janela de eventos do Windows.

Deletar um Log é tão simples quanto. Para remover o log de demonstração, use o metodo Delete, da classe EventLog:

public static void DeletaLogEvento()

{

   EventLog.Delete(“LogEventoTeste”);

}

Tenha certeza se você deseja remover informações valiosas com esse método!

Escrevendo em um Log de Eventos

Você só precisou de poucas linhas de código para escrever no arquivo de log:

MeuLog.WriteEntry(“CriaEventoLog chamado”, EventLogEntryType.Information);

O método WriteEntry parece ser muito simples, mas ele tem dez sobrecargas! Além de poder manipular Eventos de Log da sua própria aplicação, a classe EventLog também permite ler e escrever nos eventos do Windows (Aplicação, Segurança e Logs do Sistema).  O código seguinte mostra como usar esses Logs (lembre-se de que você deve ter permissões para tal).

Escrevendo em Log de Aplicação:

public static void EscreverLogAplicacao()

{

   EventLog AppLog = new EventLog(“Application”);

   AppLog.Source = “DemoLogAplicacao”;

   AppLog.WriteEntry(“Escrevendo em Log de Aplicação”, EventLogEntryType.Information);

}

Escrevendo em Log de Segurança:

public static void EscrevendoLogSeguranca()

{

   EventLog AppSeguranca = new EventLog(“Security”);

   AppSeguranca.Source = “DemoLogSeguranca”;

   AppSeguranca.WriteEntry(“Ocorreu um ataque de trojan ao sistema do seguinte IP: 192.168.0.1″, EventLogEntryType.Warning);

}

Escrevendo em Log de Sistema:

public static void EscrevendoLogSistema()

{

   EventLog AppSistema = new EventLog(“System”);

   AppSistema.Source = “DemoLogSistema”;

   AppSistema.WriteEntry(“O serviço será inicializado assim que o Windows for reinicializado.”, EventLogEntryType.Information);

}

Até agora, um log de eventos foi criado e escrevemos informações nele. A classe EventLog tem uma propriedade Entries, a qual é uma instancia de EventLogEntryCollection, e contém objetos EventLogEntry. Depois que você obter uma instancia da sua classe EventLog, você pode iteragir pelas entradas de logs, como mostra o seguinte código:

public static void LendoLogEventos()

{

   EventLog LogEventos = new EventLog();

   LogEventos.Log = “LogSistema”;

   foreach (EventLogEntry LogEntry in LogEventos.Entries)

   {

      Console.WriteLine(LogEntry.Source + “:” + LogEntry.Message);

   }

}

Para limpar o log usamos o metodo Clear da classe EventLog:

public static void ApagarLog()

{

   EventLog ApagaLog = new EventLog(“LogDemo”);

   ApagaLog.Source = “ApagaLogDemo”;

   ApagaLog.Clear();

 }


Deixe uma resposta

Sua resposta:

Categorias