Escritura de entradas en un registro de eventos mediante Visual C++

En este artículo se describe cómo agregar sus propias entradas al registro de eventos del sistema operativo mediante Microsoft .NET Framework.

Versión original del producto: Visual C++
Número de KB original: 815661

Requisitos

Visual Studio .NET

Escribir entradas en un registro de eventos

El registro de eventos proporciona una forma estándar y centralizada para que las aplicaciones registren eventos importantes de software y hardware. Windows proporciona una interfaz de usuario estándar para ver los registros: el Visor de eventos. Mediante el uso del componente EventLog en tiempo de ejecución de common language, puede conectarse fácilmente a los registros de eventos existentes, tanto en equipos locales como remotos, y escribir entradas en estos registros. También puede leer entradas de registros existentes y crear sus propios registros de eventos personalizados. En su forma más sencilla, escribir en un registro de eventos implica varios pasos para crear una aplicación de ejemplo.

Para ello, siga estos pasos:

  1. Inicie Visual Studio .NET.

  2. Cree un nuevo proyecto de aplicación de C++ administrada de Visual C++.

  3. Agregue una referencia a system.dll agregando la siguiente línea al código:

    #using <system.dll>
    
  4. Use la using directiva en los System espacios de nombres y System::Diagnostics para que no tenga que calificar las declaraciones de estos espacios de nombres más adelante en el código. Puede usar las siguientes instrucciones antes de cualquier otra declaración:

    using namespace System;
    using namespace System::Diagnostics;
    
  5. Para escribir en un registro de eventos, debe tener varios fragmentos de información:

    • El mensaje
    • Nombre del registro en el que desea escribir (se crea si aún no existe)
    • Cadena que representa el origen del evento

    Puede registrar un origen determinado con un solo registro de eventos. Si desea escribir mensajes en más de un registro, debe definir varios orígenes.

    String^ sSource;
    String^ sLog;
    String^ sEvent;
    
    sSource = gcnew String("dotNET Sample App1");
    sLog = gcnew String("Application1");
    sEvent = gcnew String("Sample Event1");
    
  6. Use dos métodos estáticos de la EventLog clase para comprobar si el origen existe y si el origen no existe, para crear este origen asociado a un registro de eventos determinado. Si el nombre de registro especificado no existe, el nombre se crea automáticamente al escribir la primera entrada en el registro. De forma predeterminada, si no proporciona un nombre de registro al CreateEventSource método, el archivo de registro se denomina Registro de aplicación.

    if(!EventLog::SourceExists(sSource)) EventLog::CreateEventSource(sSource,sLog);
    
  7. Para escribir un mensaje en un registro de eventos, puede usar el método EventLog.WriteEntryestático . Este método tiene varias versiones sobrecargadas diferentes. El código de ejemplo siguiente muestra el método más sencillo (que toma una cadena de origen y el mensaje) y uno de los métodos más complejos (que admite la especificación del identificador de evento y el tipo de evento):

    EventLog::WriteEntry(sSource,sEvent);
    EventLog::WriteEntry(sSource, sEvent, EventLogEntryType::Warning, 235);
    
  8. Guarde la aplicación. Ejecute la aplicación y compruebe el inicio de sesión de la aplicación en el Visor de eventos para ver los nuevos eventos.

Lista de código completa en 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;
}