EventLog.WriteEvent Método

Definición

Escribe una entrada de evento localizada en el registro de eventos.

Sobrecargas

WriteEvent(String, EventInstance, Object[])

Escribe una entrada de registro de eventos con las cadenas de reemplazo de mensaje y los datos de evento proporcionados, para lo que utiliza el origen de eventos registrado.

WriteEvent(EventInstance, Object[])

Escribe una entrada localizada en el registro de eventos.

WriteEvent(EventInstance, Byte[], Object[])

Escribe una entrada de registro de eventos con los datos de evento dados, con cadenas de reemplazo de mensajes y con datos binarios asociados.

WriteEvent(String, EventInstance, Byte[], Object[])

Escribe una entrada de registro con los datos de evento dados, con cadenas de reemplazo de mensajes y con datos binarios asociados y, además, utiliza el origen de eventos registrado que se especifica.

WriteEvent(String, EventInstance, Object[])

Escribe una entrada de registro de eventos con las cadenas de reemplazo de mensaje y los datos de evento proporcionados, para lo que utiliza el origen de eventos registrado.

public:
 static void WriteEvent(System::String ^ source, System::Diagnostics::EventInstance ^ instance, ... cli::array <System::Object ^> ^ values);
public static void WriteEvent (string source, System.Diagnostics.EventInstance instance, params object[] values);
static member WriteEvent : string * System.Diagnostics.EventInstance * obj[] -> unit
Public Shared Sub WriteEvent (source As String, instance As EventInstance, ParamArray values As Object())

Parámetros

source
String

Nombre del origen de eventos registrado para la aplicación en el equipo especificado.

instance
EventInstance

Instancia de EventInstance que representa una entrada localizada del registro de eventos.

values
Object[]

Matriz de cadenas que se van a fusionar mediante combinación para formar el texto del mensaje de la entrada del registro de eventos.

Excepciones

El valor de source es una cadena vacía ("").

o bien

El valor source es null.

o bien

instance.InstanceId es menor que cero o mayor que UInt16.MaxValue.

o bien

values tiene más de 256 elementos.

o bien

Uno de los elementos values tiene más de 32766 bytes.

o bien

El nombre de origen produce una ruta de clave del Registro con una longitud superior a 254 caracteres.

instance es null.

No se ha podido abrir la clave del Registro para el registro de eventos.

El sistema operativo ha notificado un error al escribir la entrada de evento en el registro. No hay ningún código de error de Windows disponible.

Ejemplos

En el ejemplo siguiente se escribe una entrada de evento informativo y una entrada de evento de advertencia en un registro de eventos existente. El texto del mensaje de evento se especifica mediante un identificador de recurso en un archivo de recursos. En el ejemplo se supone que el archivo de recursos correspondiente se ha registrado para el origen.

String^ sourceName = "SampleApplicationSource";
if ( EventLog::SourceExists( sourceName ) )
{
   
   // Define an informational event and a warning event.
   // The message identifiers correspond to the message text in the
   // message resource file defined for the source.
   EventInstance ^ myInfoEvent = gcnew EventInstance( InformationMsgId,0,EventLogEntryType::Information );
   EventInstance ^ myWarningEvent = gcnew EventInstance( WarningMsgId,0,EventLogEntryType::Warning );
   
   // Insert the method name into the event log message.
   array<String^>^insertStrings = {"EventLogSamples.WriteEventSample2"};
   
   // Write the events to the event log.
   EventLog::WriteEvent( sourceName, myInfoEvent, 0 );
   
   // Append binary data to the warning event entry.
   array<Byte>^binaryData = {7,8,9,10};
   EventLog::WriteEvent( sourceName, myWarningEvent, binaryData, insertStrings );
}
else
{
   Console::WriteLine( "Warning - event source {0} not registered", sourceName );
}

string sourceName = "SampleApplicationSource";
if(EventLog.SourceExists(sourceName))
{

    // Define an informational event and a warning event.

    // The message identifiers correspond to the message text in the
    // message resource file defined for the source.
    EventInstance myInfoEvent = new EventInstance(InformationMsgId, 0, EventLogEntryType.Information);
    EventInstance myWarningEvent = new EventInstance(WarningMsgId, 0, EventLogEntryType.Warning);

    // Insert the method name into the event log message.
    string [] insertStrings = {"EventLogSamples.WriteEventSample2"};

    // Write the events to the event log.

    EventLog.WriteEvent(sourceName, myInfoEvent);

    // Append binary data to the warning event entry.
    byte [] binaryData = { 7, 8, 9, 10 };
    EventLog.WriteEvent(sourceName, myWarningEvent, binaryData, insertStrings);
}
else
{
    Console.WriteLine("Warning - event source {0} not registered",
        sourceName);
}
           Dim sourceName As String = "SampleApplicationSource"
           If EventLog.SourceExists(sourceName)
  
               ' Define an informational event and a warning event.

               ' The message identifiers correspond to the message text in the
               ' message resource file defined for the source.
               Dim myInfoEvent As EventInstance = new EventInstance(InformationMsgId, 0, EventLogEntryType.Information)
               Dim myWarningEvent As EventInstance = new EventInstance(WarningMsgId, 0, EventLogEntryType.Warning)

               ' Insert the method name into the event log message.
               Dim insertStrings() As String = {"EventLogSamples.WriteEventSample2"}
           
               ' Write the events to the event log.

               EventLog.WriteEvent(sourceName, myInfoEvent, insertStrings)

               ' Append binary data to the warning event entry.
               Dim binaryData() As Byte = { 7, 8, 9, 10 }
               EventLog.WriteEvent(sourceName, myWarningEvent, binaryData, insertStrings)
           Else 
               Console.WriteLine("Warning - event source {0} not registered", _
                   sourceName)
           End If

En el ejemplo se usa el siguiente archivo de texto de mensaje, integrado en la biblioteca de recursos EventLogMsgs.dll. Un archivo de texto de mensaje es el origen desde el que se crea el archivo de recursos del mensaje. El archivo de texto del mensaje define los identificadores de recursos y el texto de la categoría, el mensaje de evento y las cadenas de inserción de parámetros.

; // EventLogMsgs.mc  
; // ********************************************************  

; // Use the following commands to build this file:  

; //   mc -s EventLogMsgs.mc  
; //   rc EventLogMsgs.rc  
; //   link /DLL /SUBSYSTEM:WINDOWS /NOENTRY /MACHINE:x86 EventLogMsgs.Res   
; // ********************************************************  

; // - Event categories -  
; // Categories must be numbered consecutively starting at 1.  
; // ********************************************************  

MessageId=0x1  
Severity=Success  
SymbolicName=INSTALL_CATEGORY  
Language=English  
Installation  
.  

MessageId=0x2  
Severity=Success  
SymbolicName=QUERY_CATEGORY  
Language=English  
Database Query  
.  

MessageId=0x3  
Severity=Success  
SymbolicName=REFRESH_CATEGORY  
Language=English  
Data Refresh  
.  

; // - Event messages -  
; // *********************************  

MessageId = 1000  
Severity = Success  
Facility = Application  
SymbolicName = AUDIT_SUCCESS_MESSAGE_ID_1000  
Language=English  
My application message text, in English, for message id 1000, called from %1.  
.  

MessageId = 1001  
Severity = Warning  
Facility = Application  
SymbolicName = AUDIT_FAILED_MESSAGE_ID_1001  
Language=English  
My application message text, in English, for message id 1001, called from %1.  
.  

MessageId = 1002  
Severity = Success  
Facility = Application  
SymbolicName = GENERIC_INFO_MESSAGE_ID_1002  
Language=English  
My generic information message in English, for message id 1002.  
.  

MessageId = 1003  
Severity = Warning  
Facility = Application  
SymbolicName = GENERIC_WARNING_MESSAGE_ID_1003  
Language=English  
My generic warning message in English, for message id 1003, called from %1.  
.  

MessageId = 1004  
Severity = Success  
Facility = Application  
SymbolicName = UPDATE_CYCLE_COMPLETE_MESSAGE_ID_1004  
Language=English  
The update cycle is complete for %%5002.  
.  

MessageId = 1005  
Severity = Warning  
Facility = Application  
SymbolicName = SERVER_CONNECTION_DOWN_MESSAGE_ID_1005  
Language=English  
The refresh operation did not complete because the connection to server %1 could not be established.  
.  

; // - Event log display name -  
; // ********************************************************  

MessageId = 5001  
Severity = Success  
Facility = Application  
SymbolicName = EVENT_LOG_DISPLAY_NAME_MSGID  
Language=English  
Sample Event Log  
.  

; // - Event message parameters -  
; //   Language independent insertion strings  
; // ********************************************************  

MessageId = 5002  
Severity = Success  
Facility = Application  
SymbolicName = EVENT_LOG_SERVICE_NAME_MSGID  
Language=English  
SVC_UPDATE.EXE  
.  

Comentarios

Use este método para escribir una entrada localizada en el registro de eventos mediante un origen ya registrado como origen de eventos para el registro adecuado. Las propiedades del evento se especifican con identificadores de recursos en lugar de valores de cadena. El Visor de eventos usa los identificadores de recursos para mostrar las cadenas correspondientes del archivo de recursos localizado para el origen. Debe registrar el origen con el archivo de recursos correspondiente antes de escribir eventos mediante identificadores de recursos.

La instancia de entrada instance especifica el mensaje de evento y las propiedades. Establezca la InstanceId de la instance entrada del mensaje definido en el archivo de recursos del mensaje de origen. Opcionalmente, puede establecer y CategoryIdEntryType de la instance entrada para definir la categoría y el tipo de evento de la entrada de evento. También puede especificar una matriz de cadenas independientes del idioma que se van a insertar en el texto del mensaje localizado. null Se establece values en si el mensaje de evento no contiene marcadores de posición de formato para las cadenas de reemplazo.

El origen especificado debe registrarse para un registro de eventos antes de usar WriteEvent. El origen especificado debe configurarse para escribir entradas localizadas en el registro; el origen debe tener definido como mínimo un archivo de recursos de mensaje.

Debe crear y configurar el origen del evento antes de escribir la primera entrada con el origen. Cree el nuevo origen de eventos durante la instalación de la aplicación. Esto permite que el sistema operativo actualice su lista de orígenes de eventos registrados y su configuración. Si el sistema operativo no ha actualizado su lista de orígenes de eventos e intenta escribir un evento con el nuevo origen, se producirá un error en la operación de escritura. Puede configurar un nuevo origen mediante o EventLogInstallermediante el CreateEventSource método . Debe tener derechos administrativos en el equipo para crear un nuevo origen de eventos.

El origen debe configurarse para escribir entradas localizadas o para escribir cadenas directas. Use el método si la WriteEntry aplicación escribe valores de cadena directamente en el registro de eventos.

Si la aplicación escribe entradas con identificadores de recursos y valores de cadena, debe registrar dos orígenes independientes. Por ejemplo, configure un origen con archivos de recursos y después use ese origen en el WriteEvent método para escribir entradas mediante identificadores de recursos en el registro de eventos. A continuación, cree otro origen sin archivos de recursos y use ese origen en el WriteEntry método para escribir cadenas directamente en el registro de eventos mediante ese origen.

Consulte también

Se aplica a

WriteEvent(EventInstance, Object[])

Escribe una entrada localizada en el registro de eventos.

public:
 void WriteEvent(System::Diagnostics::EventInstance ^ instance, ... cli::array <System::Object ^> ^ values);
public void WriteEvent (System.Diagnostics.EventInstance instance, params object[] values);
[System.Runtime.InteropServices.ComVisible(false)]
public void WriteEvent (System.Diagnostics.EventInstance instance, params object[] values);
member this.WriteEvent : System.Diagnostics.EventInstance * obj[] -> unit
[<System.Runtime.InteropServices.ComVisible(false)>]
member this.WriteEvent : System.Diagnostics.EventInstance * obj[] -> unit
Public Sub WriteEvent (instance As EventInstance, ParamArray values As Object())

Parámetros

instance
EventInstance

Instancia de EventInstance que representa una entrada localizada del registro de eventos.

values
Object[]

Matriz de cadenas que se van a fusionar mediante combinación para formar el texto del mensaje de la entrada del registro de eventos.

Atributos

Excepciones

Aún no se ha establecido la propiedad Source de EventLog.

o bien

El método ha intentado registrar un origen de eventos nuevo, pero el nombre de equipo de MachineName no es válido.

o bien

El origen ya está registrado para otro registro de eventos.

o bien

instance.InstanceId es menor que cero o mayor que UInt16.MaxValue.

o bien

values tiene más de 256 elementos.

o bien

Uno de los elementos values tiene más de 32766 bytes.

o bien

El nombre de origen produce una ruta de clave del Registro con una longitud superior a 254 caracteres.

instance es null.

No se ha podido abrir la clave del Registro para el registro de eventos.

El sistema operativo ha notificado un error al escribir la entrada de evento en el registro. No hay ningún código de error de Windows disponible.

Ejemplos

En el ejemplo siguiente se escriben dos entradas de auditoría en el registro myNewLogde eventos . En el ejemplo se crea un nuevo origen de eventos y un nuevo registro de eventos si no existen en el equipo local. El texto del mensaje de evento se especifica mediante un identificador de recurso en un archivo de recursos.

// Create the event source if it does not exist.
String^ sourceName = "SampleApplicationSource";
if (  !EventLog::SourceExists( sourceName ) )
{
   
   // Call a local method to register the event log source
   // for the event log "myNewLog."  Use the resource file
   // EventLogMsgs.dll in the current directory for message text.
   String^ messageFile = String::Format( "{0}\\{1}", System::Environment::CurrentDirectory, "EventLogMsgs.dll" );
   CreateEventSourceSample1( messageFile );
}

// Get the event log corresponding to the existing source.
String^ myLogName = EventLog::LogNameFromSourceName( sourceName, "." );
EventLog^ myEventLog = gcnew EventLog( myLogName,".",sourceName );

// Define two audit events.
// The message identifiers correspond to the message text in the
// message resource file defined for the source.
EventInstance ^ myAuditSuccessEvent = gcnew EventInstance( AuditSuccessMsgId,0,EventLogEntryType::SuccessAudit );
EventInstance ^ myAuditFailEvent = gcnew EventInstance( AuditFailedMsgId,0,EventLogEntryType::FailureAudit );

// Insert the method name into the event log message.
array<String^>^insertStrings = {"EventLogSamples.WriteEventSample1"};

// Write the events to the event log.
myEventLog->WriteEvent( myAuditSuccessEvent, insertStrings );

// Append binary data to the audit failure event entry.
array<Byte>^binaryData = {3,4,5,6};
myEventLog->WriteEvent( myAuditFailEvent, binaryData, insertStrings );

// Create the event source if it does not exist.
string sourceName = "SampleApplicationSource";
if(!EventLog.SourceExists(sourceName))
{
    // Call a local method to register the event log source
    // for the event log "myNewLog."  Use the resource file
    // EventLogMsgs.dll in the current directory for message text.

    string messageFile =  String.Format("{0}\\{1}",
        System.Environment.CurrentDirectory,
        "EventLogMsgs.dll");

    CreateEventSourceSample1(messageFile);
}

// Get the event log corresponding to the existing source.
string myLogName = EventLog.LogNameFromSourceName(sourceName,".");

EventLog myEventLog = new EventLog(myLogName, ".", sourceName);

// Define two audit events.

// The message identifiers correspond to the message text in the
// message resource file defined for the source.
EventInstance myAuditSuccessEvent = new EventInstance(AuditSuccessMsgId, 0, EventLogEntryType.SuccessAudit);
EventInstance myAuditFailEvent = new EventInstance(AuditFailedMsgId, 0, EventLogEntryType.FailureAudit);

// Insert the method name into the event log message.
string [] insertStrings = {"EventLogSamples.WriteEventSample1"};

// Write the events to the event log.

myEventLog.WriteEvent(myAuditSuccessEvent, insertStrings);

// Append binary data to the audit failure event entry.
byte [] binaryData = { 3, 4, 5, 6 };
myEventLog.WriteEvent(myAuditFailEvent, binaryData, insertStrings);

           Dim sourceName As String = "SampleApplicationSource"

           ' Create the event source if it does not exist.
           If Not EventLog.SourceExists(sourceName)
  
               ' Call a local method to register the event log source
               ' for the event log "myNewLog."  Use the resource file
               ' EventLogMsgs.dll in the current directory for message text.

               Dim messageFile As String =  String.Format("{0}\\{1}", _
                   System.Environment.CurrentDirectory, _
                   "EventLogMsgs.dll")

               CreateEventSourceSample1(messageFile)
           End If 

           ' Get the event log corresponding to the existing source.
           Dim myLogName As String = EventLog.LogNameFromSourceName(sourceName,".")
       
           Dim myEventLog As EventLog = new EventLog(myLogName, ".", sourceName)

           ' Define two audit events.
           Dim myAuditSuccessEvent As EventInstance = new EventInstance(AuditSuccessMsgId, 0, EventLogEntryType.SuccessAudit)
           Dim myAuditFailEvent As EventInstance = new EventInstance(AuditFailedMsgId, 0, EventLogEntryType.FailureAudit)

           ' Insert the method name into the event log message.
           Dim insertStrings() As String = {"EventLogSamples.WriteEventSample1"}
           
           ' Write the events to the event log.

           myEventLog.WriteEvent(myAuditSuccessEvent, insertStrings)

           ' Append binary data to the audit failure event entry.
           Dim binaryData() As Byte = { 7, 8, 9, 10 }
           myEventLog.WriteEvent(myAuditFailEvent, binaryData, insertStrings)

En el ejemplo se usa el siguiente archivo de texto de mensaje, integrado en la biblioteca de recursos EventLogMsgs.dll. Un archivo de texto de mensaje es el origen desde el que se crea el archivo de recursos del mensaje. El archivo de texto del mensaje define los identificadores de recursos y el texto de la categoría, el mensaje de evento y las cadenas de inserción de parámetros.

; // EventLogMsgs.mc  
; // ********************************************************  

; // Use the following commands to build this file:  

; //   mc -s EventLogMsgs.mc  
; //   rc EventLogMsgs.rc  
; //   link /DLL /SUBSYSTEM:WINDOWS /NOENTRY /MACHINE:x86 EventLogMsgs.Res   
; // ********************************************************  

; // - Event categories -  
; // Categories must be numbered consecutively starting at 1.  
; // ********************************************************  

MessageId=0x1  
Severity=Success  
SymbolicName=INSTALL_CATEGORY  
Language=English  
Installation  
.  

MessageId=0x2  
Severity=Success  
SymbolicName=QUERY_CATEGORY  
Language=English  
Database Query  
.  

MessageId=0x3  
Severity=Success  
SymbolicName=REFRESH_CATEGORY  
Language=English  
Data Refresh  
.  

; // - Event messages -  
; // *********************************  

MessageId = 1000  
Severity = Success  
Facility = Application  
SymbolicName = AUDIT_SUCCESS_MESSAGE_ID_1000  
Language=English  
My application message text, in English, for message id 1000, called from %1.  
.  

MessageId = 1001  
Severity = Warning  
Facility = Application  
SymbolicName = AUDIT_FAILED_MESSAGE_ID_1001  
Language=English  
My application message text, in English, for message id 1001, called from %1.  
.  

MessageId = 1002  
Severity = Success  
Facility = Application  
SymbolicName = GENERIC_INFO_MESSAGE_ID_1002  
Language=English  
My generic information message in English, for message id 1002.  
.  

MessageId = 1003  
Severity = Warning  
Facility = Application  
SymbolicName = GENERIC_WARNING_MESSAGE_ID_1003  
Language=English  
My generic warning message in English, for message id 1003, called from %1.  
.  

MessageId = 1004  
Severity = Success  
Facility = Application  
SymbolicName = UPDATE_CYCLE_COMPLETE_MESSAGE_ID_1004  
Language=English  
The update cycle is complete for %%5002.  
.  

MessageId = 1005  
Severity = Warning  
Facility = Application  
SymbolicName = SERVER_CONNECTION_DOWN_MESSAGE_ID_1005  
Language=English  
The refresh operation did not complete because the connection to server %1 could not be established.  
.  

; // - Event log display name -  
; // ********************************************************  

MessageId = 5001  
Severity = Success  
Facility = Application  
SymbolicName = EVENT_LOG_DISPLAY_NAME_MSGID  
Language=English  
Sample Event Log  
.  

; // - Event message parameters -  
; //   Language independent insertion strings  
; // ********************************************************  

MessageId = 5002  
Severity = Success  
Facility = Application  
SymbolicName = EVENT_LOG_SERVICE_NAME_MSGID  
Language=English  
SVC_UPDATE.EXE  
.  

Comentarios

Use este método para escribir una entrada localizada en el registro de eventos. Las propiedades del evento se especifican con identificadores de recursos en lugar de valores de cadena. El Visor de eventos usa los identificadores de recursos para mostrar las cadenas correspondientes del archivo de recursos localizado para .Source Debe registrar el origen con el archivo de recursos correspondiente antes de escribir eventos mediante identificadores de recursos.

La instancia de entrada instance especifica el mensaje de evento y las propiedades. Establezca la InstanceId de la instance entrada del mensaje definido en el archivo de recursos del mensaje de origen. Opcionalmente, puede establecer y CategoryIdEntryType de la instance entrada para definir la categoría y el tipo de evento de la entrada de evento. También puede especificar una matriz de cadenas independientes del idioma que se van a insertar en el texto del mensaje localizado. null Se establece values en si el mensaje de evento no contiene marcadores de posición de formato para las cadenas de reemplazo.

Debe establecer la propiedad en el SourceEventLog componente antes de usar WriteEvent. El origen especificado debe configurarse para escribir entradas localizadas en el registro; el origen debe tener definido como mínimo un archivo de recursos de mensaje.

Debe crear y configurar el origen del evento antes de escribir la primera entrada con el origen. Cree el nuevo origen de eventos durante la instalación de la aplicación. Esto permite que el sistema operativo actualice su lista de orígenes de eventos registrados y su configuración. Si el sistema operativo no ha actualizado su lista de orígenes de eventos e intenta escribir un evento con el nuevo origen, se producirá un error en la operación de escritura. Puede configurar un nuevo origen mediante o EventLogInstallermediante el CreateEventSource método . Debe tener derechos administrativos en el equipo para crear un nuevo origen de eventos.

El origen debe configurarse para escribir entradas localizadas o para escribir cadenas directas. Use el método si la WriteEntry aplicación escribe valores de cadena directamente en el registro de eventos.

Si la aplicación escribe entradas mediante identificadores de recursos y valores de cadena, debe registrar dos orígenes independientes. Por ejemplo, configure un origen con archivos de recursos y, a continuación, use ese origen en el WriteEvent método para escribir entradas mediante identificadores de recursos en el registro de eventos. A continuación, cree un origen diferente sin archivos de recursos y use ese origen en el WriteEntry método para escribir cadenas directamente en el registro de eventos mediante ese origen.

Nota

Si escribe una entrada en un equipo remoto, es posible que el valor de la message cadena no sea lo que espera si el equipo remoto no ejecuta .NET Framework. Además, la message cadena no puede contener %n, donde n es un valor entero (por ejemplo, %1), porque el visor de eventos lo trata como una cadena de inserción. Como un protocolo de Internet, la dirección de la versión 6 (IPv6) puede contener esta secuencia de caracteres, no puede registrar un mensaje de evento que contenga una dirección IPv6.

Consulte también

Se aplica a

WriteEvent(EventInstance, Byte[], Object[])

Escribe una entrada de registro de eventos con los datos de evento dados, con cadenas de reemplazo de mensajes y con datos binarios asociados.

public:
 void WriteEvent(System::Diagnostics::EventInstance ^ instance, cli::array <System::Byte> ^ data, ... cli::array <System::Object ^> ^ values);
public void WriteEvent (System.Diagnostics.EventInstance instance, byte[] data, params object[] values);
[System.Runtime.InteropServices.ComVisible(false)]
public void WriteEvent (System.Diagnostics.EventInstance instance, byte[] data, params object[] values);
member this.WriteEvent : System.Diagnostics.EventInstance * byte[] * obj[] -> unit
[<System.Runtime.InteropServices.ComVisible(false)>]
member this.WriteEvent : System.Diagnostics.EventInstance * byte[] * obj[] -> unit
Public Sub WriteEvent (instance As EventInstance, data As Byte(), ParamArray values As Object())

Parámetros

instance
EventInstance

Instancia de EventInstance que representa una entrada localizada del registro de eventos.

data
Byte[]

Matriz de bytes que incluye los datos binarios asociados a la entrada.

values
Object[]

Matriz de cadenas que se van a fusionar mediante combinación para formar el texto del mensaje de la entrada del registro de eventos.

Atributos

Excepciones

Aún no se ha establecido la propiedad Source de EventLog.

o bien

El método ha intentado registrar un origen de eventos nuevo, pero el nombre de equipo de MachineName no es válido.

o bien

El origen ya está registrado para otro registro de eventos.

o bien

instance.InstanceId es menor que cero o mayor que UInt16.MaxValue.

o bien

values tiene más de 256 elementos.

o bien

Uno de los elementos values tiene más de 32766 bytes.

o bien

El nombre de origen produce una ruta de clave del Registro con una longitud superior a 254 caracteres.

instance es null.

No se ha podido abrir la clave del Registro para el registro de eventos.

El sistema operativo ha notificado un error al escribir la entrada de evento en el registro. No hay ningún código de error de Windows disponible.

Ejemplos

En el ejemplo siguiente se escriben dos entradas de auditoría en el registro myNewLogde eventos . En el ejemplo se crea un nuevo origen de eventos y un nuevo registro de eventos si no existen en el equipo local. El texto del mensaje de evento se especifica mediante un identificador de recurso en un archivo de recursos.

// Create the event source if it does not exist.
String^ sourceName = "SampleApplicationSource";
if (  !EventLog::SourceExists( sourceName ) )
{
   
   // Call a local method to register the event log source
   // for the event log "myNewLog."  Use the resource file
   // EventLogMsgs.dll in the current directory for message text.
   String^ messageFile = String::Format( "{0}\\{1}", System::Environment::CurrentDirectory, "EventLogMsgs.dll" );
   CreateEventSourceSample1( messageFile );
}

// Get the event log corresponding to the existing source.
String^ myLogName = EventLog::LogNameFromSourceName( sourceName, "." );
EventLog^ myEventLog = gcnew EventLog( myLogName,".",sourceName );

// Define two audit events.
// The message identifiers correspond to the message text in the
// message resource file defined for the source.
EventInstance ^ myAuditSuccessEvent = gcnew EventInstance( AuditSuccessMsgId,0,EventLogEntryType::SuccessAudit );
EventInstance ^ myAuditFailEvent = gcnew EventInstance( AuditFailedMsgId,0,EventLogEntryType::FailureAudit );

// Insert the method name into the event log message.
array<String^>^insertStrings = {"EventLogSamples.WriteEventSample1"};

// Write the events to the event log.
myEventLog->WriteEvent( myAuditSuccessEvent, insertStrings );

// Append binary data to the audit failure event entry.
array<Byte>^binaryData = {3,4,5,6};
myEventLog->WriteEvent( myAuditFailEvent, binaryData, insertStrings );

// Create the event source if it does not exist.
string sourceName = "SampleApplicationSource";
if(!EventLog.SourceExists(sourceName))
{
    // Call a local method to register the event log source
    // for the event log "myNewLog."  Use the resource file
    // EventLogMsgs.dll in the current directory for message text.

    string messageFile =  String.Format("{0}\\{1}",
        System.Environment.CurrentDirectory,
        "EventLogMsgs.dll");

    CreateEventSourceSample1(messageFile);
}

// Get the event log corresponding to the existing source.
string myLogName = EventLog.LogNameFromSourceName(sourceName,".");

EventLog myEventLog = new EventLog(myLogName, ".", sourceName);

// Define two audit events.

// The message identifiers correspond to the message text in the
// message resource file defined for the source.
EventInstance myAuditSuccessEvent = new EventInstance(AuditSuccessMsgId, 0, EventLogEntryType.SuccessAudit);
EventInstance myAuditFailEvent = new EventInstance(AuditFailedMsgId, 0, EventLogEntryType.FailureAudit);

// Insert the method name into the event log message.
string [] insertStrings = {"EventLogSamples.WriteEventSample1"};

// Write the events to the event log.

myEventLog.WriteEvent(myAuditSuccessEvent, insertStrings);

// Append binary data to the audit failure event entry.
byte [] binaryData = { 3, 4, 5, 6 };
myEventLog.WriteEvent(myAuditFailEvent, binaryData, insertStrings);

           Dim sourceName As String = "SampleApplicationSource"

           ' Create the event source if it does not exist.
           If Not EventLog.SourceExists(sourceName)
  
               ' Call a local method to register the event log source
               ' for the event log "myNewLog."  Use the resource file
               ' EventLogMsgs.dll in the current directory for message text.

               Dim messageFile As String =  String.Format("{0}\\{1}", _
                   System.Environment.CurrentDirectory, _
                   "EventLogMsgs.dll")

               CreateEventSourceSample1(messageFile)
           End If 

           ' Get the event log corresponding to the existing source.
           Dim myLogName As String = EventLog.LogNameFromSourceName(sourceName,".")
       
           Dim myEventLog As EventLog = new EventLog(myLogName, ".", sourceName)

           ' Define two audit events.
           Dim myAuditSuccessEvent As EventInstance = new EventInstance(AuditSuccessMsgId, 0, EventLogEntryType.SuccessAudit)
           Dim myAuditFailEvent As EventInstance = new EventInstance(AuditFailedMsgId, 0, EventLogEntryType.FailureAudit)

           ' Insert the method name into the event log message.
           Dim insertStrings() As String = {"EventLogSamples.WriteEventSample1"}
           
           ' Write the events to the event log.

           myEventLog.WriteEvent(myAuditSuccessEvent, insertStrings)

           ' Append binary data to the audit failure event entry.
           Dim binaryData() As Byte = { 7, 8, 9, 10 }
           myEventLog.WriteEvent(myAuditFailEvent, binaryData, insertStrings)

En el ejemplo se usa el siguiente archivo de texto de mensaje, integrado en la biblioteca de recursos EventLogMsgs.dll. Un archivo de texto de mensaje es el origen desde el que se crea el archivo de recursos del mensaje. El archivo de texto del mensaje define los identificadores de recursos y el texto de la categoría, el mensaje de evento y las cadenas de inserción de parámetros.

; // EventLogMsgs.mc  
; // ********************************************************  

; // Use the following commands to build this file:  

; //   mc -s EventLogMsgs.mc  
; //   rc EventLogMsgs.rc  
; //   link /DLL /SUBSYSTEM:WINDOWS /NOENTRY /MACHINE:x86 EventLogMsgs.Res   
; // ********************************************************  

; // - Event categories -  
; // Categories must be numbered consecutively starting at 1.  
; // ********************************************************  

MessageId=0x1  
Severity=Success  
SymbolicName=INSTALL_CATEGORY  
Language=English  
Installation  
.  

MessageId=0x2  
Severity=Success  
SymbolicName=QUERY_CATEGORY  
Language=English  
Database Query  
.  

MessageId=0x3  
Severity=Success  
SymbolicName=REFRESH_CATEGORY  
Language=English  
Data Refresh  
.  

; // - Event messages -  
; // *********************************  

MessageId = 1000  
Severity = Success  
Facility = Application  
SymbolicName = AUDIT_SUCCESS_MESSAGE_ID_1000  
Language=English  
My application message text, in English, for message id 1000, called from %1.  
.  

MessageId = 1001  
Severity = Warning  
Facility = Application  
SymbolicName = AUDIT_FAILED_MESSAGE_ID_1001  
Language=English  
My application message text, in English, for message id 1001, called from %1.  
.  

MessageId = 1002  
Severity = Success  
Facility = Application  
SymbolicName = GENERIC_INFO_MESSAGE_ID_1002  
Language=English  
My generic information message in English, for message id 1002.  
.  

MessageId = 1003  
Severity = Warning  
Facility = Application  
SymbolicName = GENERIC_WARNING_MESSAGE_ID_1003  
Language=English  
My generic warning message in English, for message id 1003, called from %1.  
.  

MessageId = 1004  
Severity = Success  
Facility = Application  
SymbolicName = UPDATE_CYCLE_COMPLETE_MESSAGE_ID_1004  
Language=English  
The update cycle is complete for %%5002.  
.  

MessageId = 1005  
Severity = Warning  
Facility = Application  
SymbolicName = SERVER_CONNECTION_DOWN_MESSAGE_ID_1005  
Language=English  
The refresh operation did not complete because the connection to server %1 could not be established.  
.  

; // - Event log display name -  
; // ********************************************************  

MessageId = 5001  
Severity = Success  
Facility = Application  
SymbolicName = EVENT_LOG_DISPLAY_NAME_MSGID  
Language=English  
Sample Event Log  
.  

; // - Event message parameters -  
; //   Language independent insertion strings  
; // ********************************************************  

MessageId = 5002  
Severity = Success  
Facility = Application  
SymbolicName = EVENT_LOG_SERVICE_NAME_MSGID  
Language=English  
SVC_UPDATE.EXE  
.  

Comentarios

Use este método para escribir una entrada localizada con datos adicionales específicos del evento en el registro de eventos. Las propiedades del evento se especifican con identificadores de recursos en lugar de valores de cadena. El Visor de eventos usa los identificadores de recursos para mostrar las cadenas correspondientes del archivo de recursos localizado para Source. Debe registrar el origen con el archivo de recursos correspondiente antes de escribir eventos mediante identificadores de recursos.

La instancia de entrada instance especifica el mensaje de evento y las propiedades. Establezca el InstanceId de la instance entrada para el mensaje definido en el archivo de recursos del mensaje de origen. Opcionalmente, puede establecer y CategoryIdEntryType de la instance entrada para definir la categoría y el tipo de evento de la entrada de evento. También puede especificar una matriz de cadenas independientes del idioma que se van a insertar en el texto del mensaje localizado. Se establece values en null si el mensaje de evento no contiene marcadores de posición de formato para cadenas de reemplazo.

Especifique datos binarios con un evento cuando sea necesario proporcionar detalles adicionales para el evento. Por ejemplo, use el data parámetro para incluir información sobre un error específico. El Visor de eventos no interpreta los datos de eventos asociados; muestra los datos en un formato de texto y hexadecimal combinado. Usar datos específicos de eventos con moderación; incluirlo solo si está seguro de que será útil. También puede usar datos específicos del evento para almacenar información que la aplicación puede procesar independientemente del Visor de eventos. Por ejemplo, podría escribir un visor específicamente para los eventos o escribir un programa que examine el registro de eventos y cree informes que incluyan información de los datos específicos del evento.

Debe establecer la propiedad en EventLog el Source componente antes del componente antes de usar WriteEvent. El origen especificado debe configurarse para escribir entradas localizadas en el registro; el origen debe tener definido como mínimo un archivo de recursos de mensaje.

Debe crear y configurar el origen del evento antes de escribir la primera entrada con el origen. Cree el nuevo origen de eventos durante la instalación de la aplicación. Esto permite que el sistema operativo actualice su lista de orígenes de eventos registrados y su configuración. Si el sistema operativo no ha actualizado su lista de orígenes de eventos e intenta escribir un evento con el nuevo origen, se producirá un error en la operación de escritura. Puede configurar un nuevo origen mediante EventLogInstaller, o mediante el CreateEventSource método . Debe tener derechos administrativos en el equipo para crear un nuevo origen de eventos.

Nota

Si no especifica un MachineName para la EventLog instancia antes de llamar a WriteEvent, se asume el equipo local (".").

El origen debe configurarse para escribir entradas localizadas o para escribir cadenas directas. Use el método si la WriteEntry aplicación escribe valores de cadena directamente en el registro de eventos.

Si la aplicación escribe entradas mediante identificadores de recursos y valores de cadena, debe registrar dos orígenes independientes. Por ejemplo, configure un origen con archivos de recursos y, a continuación, use ese origen en el WriteEvent método para escribir entradas mediante identificadores de recursos en el registro de eventos. A continuación, cree un origen diferente sin archivos de recursos y use ese origen en el WriteEntry método para escribir cadenas directamente en el registro de eventos mediante ese origen.

Nota

Si escribe una entrada en un equipo remoto, es posible que el valor de la message cadena no sea lo que espera si el equipo remoto no ejecuta .NET Framework. Además, la message cadena no puede contener %n, donde n es un valor entero (por ejemplo, %1), porque el visor de eventos lo trata como una cadena de inserción. Como un protocolo de Internet, la dirección de la versión 6 (IPv6) puede contener esta secuencia de caracteres, no puede registrar un mensaje de evento que contenga una dirección IPv6.

Consulte también

Se aplica a

WriteEvent(String, EventInstance, Byte[], Object[])

Escribe una entrada de registro con los datos de evento dados, con cadenas de reemplazo de mensajes y con datos binarios asociados y, además, utiliza el origen de eventos registrado que se especifica.

public:
 static void WriteEvent(System::String ^ source, System::Diagnostics::EventInstance ^ instance, cli::array <System::Byte> ^ data, ... cli::array <System::Object ^> ^ values);
public static void WriteEvent (string source, System.Diagnostics.EventInstance instance, byte[] data, params object[] values);
static member WriteEvent : string * System.Diagnostics.EventInstance * byte[] * obj[] -> unit
Public Shared Sub WriteEvent (source As String, instance As EventInstance, data As Byte(), ParamArray values As Object())

Parámetros

source
String

Nombre del origen de eventos registrado para la aplicación en el equipo especificado.

instance
EventInstance

Instancia de EventInstance que representa una entrada localizada del registro de eventos.

data
Byte[]

Matriz de bytes que incluye los datos binarios asociados a la entrada.

values
Object[]

Matriz de cadenas que se van a fusionar mediante combinación para formar el texto del mensaje de la entrada del registro de eventos.

Excepciones

El valor de source es una cadena vacía ("").

o bien

El valor source es null.

o bien

instance.InstanceId es menor que cero o mayor que UInt16.MaxValue.

o bien

values tiene más de 256 elementos.

o bien

Uno de los elementos values tiene más de 32766 bytes.

o bien

El nombre de origen produce una ruta de clave del Registro con una longitud superior a 254 caracteres.

instance es null.

No se ha podido abrir la clave del Registro para el registro de eventos.

El sistema operativo ha notificado un error al escribir la entrada de evento en el registro. No hay ningún código de error de Windows disponible.

Ejemplos

En el ejemplo siguiente se escribe una entrada de evento informativo y una entrada de evento de advertencia en un registro de eventos existente. El texto del mensaje de evento se especifica mediante un identificador de recurso en un archivo de recursos. En el ejemplo se supone que el archivo de recursos correspondiente se ha registrado para el origen.

String^ sourceName = "SampleApplicationSource";
if ( EventLog::SourceExists( sourceName ) )
{
   
   // Define an informational event and a warning event.
   // The message identifiers correspond to the message text in the
   // message resource file defined for the source.
   EventInstance ^ myInfoEvent = gcnew EventInstance( InformationMsgId,0,EventLogEntryType::Information );
   EventInstance ^ myWarningEvent = gcnew EventInstance( WarningMsgId,0,EventLogEntryType::Warning );
   
   // Insert the method name into the event log message.
   array<String^>^insertStrings = {"EventLogSamples.WriteEventSample2"};
   
   // Write the events to the event log.
   EventLog::WriteEvent( sourceName, myInfoEvent, 0 );
   
   // Append binary data to the warning event entry.
   array<Byte>^binaryData = {7,8,9,10};
   EventLog::WriteEvent( sourceName, myWarningEvent, binaryData, insertStrings );
}
else
{
   Console::WriteLine( "Warning - event source {0} not registered", sourceName );
}

string sourceName = "SampleApplicationSource";
if(EventLog.SourceExists(sourceName))
{

    // Define an informational event and a warning event.

    // The message identifiers correspond to the message text in the
    // message resource file defined for the source.
    EventInstance myInfoEvent = new EventInstance(InformationMsgId, 0, EventLogEntryType.Information);
    EventInstance myWarningEvent = new EventInstance(WarningMsgId, 0, EventLogEntryType.Warning);

    // Insert the method name into the event log message.
    string [] insertStrings = {"EventLogSamples.WriteEventSample2"};

    // Write the events to the event log.

    EventLog.WriteEvent(sourceName, myInfoEvent);

    // Append binary data to the warning event entry.
    byte [] binaryData = { 7, 8, 9, 10 };
    EventLog.WriteEvent(sourceName, myWarningEvent, binaryData, insertStrings);
}
else
{
    Console.WriteLine("Warning - event source {0} not registered",
        sourceName);
}
           Dim sourceName As String = "SampleApplicationSource"
           If EventLog.SourceExists(sourceName)
  
               ' Define an informational event and a warning event.

               ' The message identifiers correspond to the message text in the
               ' message resource file defined for the source.
               Dim myInfoEvent As EventInstance = new EventInstance(InformationMsgId, 0, EventLogEntryType.Information)
               Dim myWarningEvent As EventInstance = new EventInstance(WarningMsgId, 0, EventLogEntryType.Warning)

               ' Insert the method name into the event log message.
               Dim insertStrings() As String = {"EventLogSamples.WriteEventSample2"}
           
               ' Write the events to the event log.

               EventLog.WriteEvent(sourceName, myInfoEvent, insertStrings)

               ' Append binary data to the warning event entry.
               Dim binaryData() As Byte = { 7, 8, 9, 10 }
               EventLog.WriteEvent(sourceName, myWarningEvent, binaryData, insertStrings)
           Else 
               Console.WriteLine("Warning - event source {0} not registered", _
                   sourceName)
           End If

En el ejemplo se usa el siguiente archivo de texto de mensaje, integrado en la biblioteca de recursos EventLogMsgs.dll. Un archivo de texto de mensaje es el origen desde el que se crea el archivo de recursos del mensaje. El archivo de texto del mensaje define los identificadores de recursos y el texto de la categoría, el mensaje de evento y las cadenas de inserción de parámetros.

; // EventLogMsgs.mc  
; // ********************************************************  

; // Use the following commands to build this file:  

; //   mc -s EventLogMsgs.mc  
; //   rc EventLogMsgs.rc  
; //   link /DLL /SUBSYSTEM:WINDOWS /NOENTRY /MACHINE:x86 EventLogMsgs.Res   
; // ********************************************************  

; // - Event categories -  
; // Categories must be numbered consecutively starting at 1.  
; // ********************************************************  

MessageId=0x1  
Severity=Success  
SymbolicName=INSTALL_CATEGORY  
Language=English  
Installation  
.  

MessageId=0x2  
Severity=Success  
SymbolicName=QUERY_CATEGORY  
Language=English  
Database Query  
.  

MessageId=0x3  
Severity=Success  
SymbolicName=REFRESH_CATEGORY  
Language=English  
Data Refresh  
.  

; // - Event messages -  
; // *********************************  

MessageId = 1000  
Severity = Success  
Facility = Application  
SymbolicName = AUDIT_SUCCESS_MESSAGE_ID_1000  
Language=English  
My application message text, in English, for message id 1000, called from %1.  
.  

MessageId = 1001  
Severity = Warning  
Facility = Application  
SymbolicName = AUDIT_FAILED_MESSAGE_ID_1001  
Language=English  
My application message text, in English, for message id 1001, called from %1.  
.  

MessageId = 1002  
Severity = Success  
Facility = Application  
SymbolicName = GENERIC_INFO_MESSAGE_ID_1002  
Language=English  
My generic information message in English, for message id 1002.  
.  

MessageId = 1003  
Severity = Warning  
Facility = Application  
SymbolicName = GENERIC_WARNING_MESSAGE_ID_1003  
Language=English  
My generic warning message in English, for message id 1003, called from %1.  
.  

MessageId = 1004  
Severity = Success  
Facility = Application  
SymbolicName = UPDATE_CYCLE_COMPLETE_MESSAGE_ID_1004  
Language=English  
The update cycle is complete for %%5002.  
.  

MessageId = 1005  
Severity = Warning  
Facility = Application  
SymbolicName = SERVER_CONNECTION_DOWN_MESSAGE_ID_1005  
Language=English  
The refresh operation did not complete because the connection to server %1 could not be established.  
.  

; // - Event log display name -  
; // ********************************************************  

MessageId = 5001  
Severity = Success  
Facility = Application  
SymbolicName = EVENT_LOG_DISPLAY_NAME_MSGID  
Language=English  
Sample Event Log  
.  

; // - Event message parameters -  
; //   Language independent insertion strings  
; // ********************************************************  

MessageId = 5002  
Severity = Success  
Facility = Application  
SymbolicName = EVENT_LOG_SERVICE_NAME_MSGID  
Language=English  
SVC_UPDATE.EXE  
.  

Comentarios

Use este método para escribir una entrada localizada con datos adicionales específicos del evento en el registro de eventos, con un origen ya registrado como origen de eventos para el registro adecuado. Las propiedades del evento se especifican con identificadores de recursos en lugar de valores de cadena. El Visor de eventos usa los identificadores de recursos para mostrar las cadenas correspondientes del archivo de recursos localizado para el origen. Debe registrar el origen con el archivo de recursos correspondiente antes de escribir eventos mediante identificadores de recursos.

La instancia de entrada instance especifica el mensaje de evento y las propiedades. Establezca la InstanceId de la instance entrada del mensaje definido en el archivo de recursos del mensaje de origen. Opcionalmente, puede establecer y CategoryIdEntryType de la instance entrada para definir la categoría y el tipo de evento de la entrada de evento. También puede especificar una matriz de cadenas independientes del idioma que se van a insertar en el texto del mensaje localizado. null Se establece values en si el mensaje de evento no contiene marcadores de posición de formato para las cadenas de reemplazo.

Especifique datos binarios con un evento cuando sea necesario proporcionar detalles adicionales para el evento. Por ejemplo, use el data parámetro para incluir información sobre un error específico. El Visor de eventos no interpreta los datos de eventos asociados; muestra los datos en un formato hexadecimal y de texto combinado. Usar datos específicos de eventos con moderación; inclúyelo solo si está seguro de que será útil. También puede usar datos específicos del evento para almacenar información que la aplicación puede procesar independientemente del Visor de eventos. Por ejemplo, podría escribir un visor específicamente para los eventos o escribir un programa que examine el registro de eventos y cree informes que incluyan información de los datos específicos del evento.

El origen especificado debe registrarse para un registro de eventos antes de usar WriteEvent. El origen especificado debe configurarse para escribir entradas localizadas en el registro; el origen debe tener definido como mínimo un archivo de recursos de mensaje.

Debe crear y configurar el origen del evento antes de escribir la primera entrada con el origen. Cree el nuevo origen de eventos durante la instalación de la aplicación. Esto permite que el sistema operativo actualice su lista de orígenes de eventos registrados y su configuración. Si el sistema operativo no ha actualizado su lista de orígenes de eventos e intenta escribir un evento con el nuevo origen, se producirá un error en la operación de escritura. Puede configurar un nuevo origen mediante o EventLogInstallermediante el CreateEventSource método . Debe tener derechos administrativos en el equipo para crear un nuevo origen de eventos.

El origen debe configurarse para escribir entradas localizadas o para escribir cadenas directas. Use el método si la WriteEntry aplicación escribe valores de cadena directamente en el registro de eventos.

Si la aplicación escribe entradas con identificadores de recursos y valores de cadena, debe registrar dos orígenes independientes. Por ejemplo, configure un origen con archivos de recursos y después use ese origen en el WriteEvent método para escribir entradas mediante identificadores de recursos en el registro de eventos. A continuación, cree otro origen sin archivos de recursos y use ese origen en el WriteEntry método para escribir cadenas directamente en el registro de eventos mediante ese origen.

Consulte también

Se aplica a