EventLog.WriteEvent Método
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
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[])
- Source:
- EventLog.cs
- Source:
- EventLog.cs
- Source:
- EventLog.cs
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, 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 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.
El origen especificado debe estar registrado 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. Create 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.
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.
Consulte también
Se aplica a
WriteEvent(EventInstance, Object[])
- Source:
- EventLog.cs
- Source:
- EventLog.cs
- Source:
- EventLog.cs
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 myNewLog
de 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 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.
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. Create 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.
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[])
- Source:
- EventLog.cs
- Source:
- EventLog.cs
- Source:
- EventLog.cs
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 myNewLog
de 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. Create 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[])
- Source:
- EventLog.cs
- Source:
- EventLog.cs
- Source:
- EventLog.cs
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 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.
El origen especificado debe estar registrado 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. Create 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.
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.