Ao escrever aplicativos ou serviços do Windows, o Windows tem uma boa ferramenta incorporada chamada Event Viewer ou Event Logs que pode ser usada para fins de registro e ajuda muito na depuração e rastreamento dos registros críticos dos aplicativos.

Pode-se registrar os eventos críticos e principais que estão acontecendo dentro do seu código de aplicativo, como, quando o aplicativo começou, quando o aplicativo atingiu algum limite, e quando o aplicativo teve algum erro e pode registrar detalhes de erro no visualizador de eventos.

O próprio Windows armazena os eventos que acontecem nos serviços internos do Windows.

O visualizador de eventos do Windows é uma ótima maneira de registrar registros críticos de informações, avisos e erros.

Às vezes, a necessidade é ler do espectador do evento, essas situações podem incluir monitorar eventos de janelas, monitorar alguns eventos de aplicativos personalizados.

Podemos aproveitar o EventLogWatcher.EventLogWritten para assinar os registros do espectador do evento.

A seguir está o trecho de código mostrando seu uso.

void Main(string[] args)
{
  var logQuery = new EventLogQuery("Application", PathType.LogName);
  EventLogWatcher watcher = new EventLogWatcher(logQuery);

  watcher.EventRecordWritten += NewEventEntryWritten;

  watcher.Enabled = true;

  //just to make the app wait to see the event hit
  System.Threading.Thread.Sleep(10000);

}

private void NewEventEntryWritten(object sender, EventRecordWrittenEventArgs e)
{
  String message = e.EventRecord.FormatDescription();
  //here it is...
  //make decision based on the contents of the message
}

Artigo Original