Gravar entradas em um log de eventos usando o Visual C++

Este artigo descreve como adicionar suas próprias entradas ao log de eventos do sistema operacional usando o Microsoft .NET Framework.

Versão original do produto: Visual C++
Número de KB original: 815661

Requisitos

Visual Studio .NET

Gravar entradas em um log de eventos

O log de eventos fornece uma maneira centralizada e padrão para que seus aplicativos registrem eventos importantes de software e hardware. O Windows fornece uma interface de usuário padrão para exibir os logs: o Visualizador de Eventos. Usando o componente EventLog em tempo de execução de linguagem comum, você pode se conectar facilmente a logs de eventos existentes, em computadores locais e remotos, e gravar entradas nesses logs. Você também pode ler entradas de logs existentes e criar seus próprios logs de eventos personalizados. Em seu formulário mais simples, gravar em um log de eventos envolve várias etapas para criar um aplicativo de exemplo.

Para fazer isso, siga estas etapas:

  1. Inicie o Visual Studio .NET.

  2. Crie um novo projeto de aplicativo C++ Gerenciado do Visual C++.

  3. Adicione uma referência a system.dll adicionando a seguinte linha ao código:

    #using <system.dll>
    
  4. Use a using diretiva nos System namespaces e System::Diagnostics para que você não precise qualificar declarações desses namespaces posteriormente em seu código. Você pode usar as seguintes instruções antes de qualquer outra declaração:

    using namespace System;
    using namespace System::Diagnostics;
    
  5. Para gravar em um log de eventos, você deve ter várias informações:

    • Sua mensagem
    • O nome do log para onde você deseja gravar (ele é criado se ele ainda não existir)
    • Uma cadeia de caracteres que representa a origem do evento

    Você pode registrar uma fonte específica com apenas um único log de eventos. Se você quiser gravar mensagens em mais de um log, você deve definir várias fontes.

    String^ sSource;
    String^ sLog;
    String^ sEvent;
    
    sSource = gcnew String("dotNET Sample App1");
    sLog = gcnew String("Application1");
    sEvent = gcnew String("Sample Event1");
    
  6. Use dois métodos estáticos da EventLog classe para marcar se a origem existe e, se a origem não existir, para criar essa fonte associada a um log de eventos específico. Se o nome de log especificado não existir, o nome será criado automaticamente quando você grava sua primeira entrada no log. Por padrão, se você não fornecer um nome de log para o CreateEventSource método, o arquivo de log será chamado de Log de Aplicativo.

    if(!EventLog::SourceExists(sSource)) EventLog::CreateEventSource(sSource,sLog);
    
  7. Para gravar uma mensagem em um log de eventos, você pode usar o método EventLog.WriteEntryestático . Esse método tem várias versões sobrecarregadas diferentes. O código de exemplo a seguir mostra o método mais simples (que usa uma cadeia de caracteres de origem e sua mensagem) e um dos métodos mais complexos (que dá suporte à especificação da ID do evento e do tipo de evento):

    EventLog::WriteEntry(sSource,sEvent);
    EventLog::WriteEntry(sSource, sEvent, EventLogEntryType::Warning, 235);
    
  8. Salve seu aplicativo. Execute seu aplicativo e marcar o aplicativo entre no Visualizador de Eventos para ver seus novos eventos.

Lista de códigos completa no Visual C++ .NET

#include <tchar.h>
#using <system.dll>
#using <mscorlib.dll>

using namespace System;
using namespace System::Diagnostics;

int _tmain()
{
    String^ sSource;
    String^ sLog;
    String^ sEvent;

    sSource = gcnew String("dotNET Sample App1");
    sLog = gcnew String("Application1");
    sEvent = gcnew String("Sample Event1");

     if(!EventLog::SourceExists(sSource))
       EventLog::CreateEventSource(sSource,sLog);

    EventLog::WriteEntry(sSource,sEvent);
    EventLog::WriteEntry(sSource, sEvent,
    EventLogEntryType::Warning, 234);
    return 0;
}