Exportar (0) Imprimir
Expandir todo
Este artículo proviene de un motor de traducción automática. Mueva el puntero sobre las frases del artículo para ver el texto original. Más información.
Traducción
Original

EventLog::WriteEvent (Método) (EventInstance, array<Byte>, array<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.

Espacio de nombres:  System.Diagnostics
Ensamblado:  System (en System.dll)

[ComVisibleAttribute(false)]
public:
void WriteEvent(
	EventInstance^ instance, 
	array<unsigned char>^ data, 
	... array<Object^>^ values
)

Parámetros

instance
Tipo: System.Diagnostics::EventInstance
Instancia de EventInstance que representa una entrada adaptada del registro de eventos.
data
Tipo: array<System::Byte>
Matriz de bytes que incluye los datos binarios asociados a la entrada.
values
Tipo: array<System::Object>
Matriz de cadenas que se van a combinar para formar el texto del mensaje de la entrada del registro de eventos.

ExcepciónCondición
ArgumentException

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.

ArgumentNullException

instance es referencia null (Nothing en Visual Basic).

InvalidOperationException

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

Win32Exception

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.

Este método se utiliza para escribir en el registro de eventos una entrada adaptada con otros datos específicos del evento. Las propiedades de evento se especifican mejor con identificadores de recursos que con valores de cadena. El Visor de eventos usa los identificadores de recursos para mostrar las cadenas correspondientes del archivo de recursos adaptado de Source. Antes de escribir eventos con identificadores de recursos, deberá registrarse el origen con el archivo de recursos correspondiente.

La instancia de entrada de instance especifica el mensaje y las propiedades del evento. El InstanceId de la entrada instance debe establecerse para el mensaje definido en el archivo de recursos de mensajes. Como alternativa, pueden establecerse los CategoryId y EntryType de la entrada instance para definir la categoría y tipo de evento de la entrada de evento. También puede especificarse una matriz de cadenas válidas para cualquier idioma para insertar en el texto del mensaje adaptado. Cuando el mensaje de evento no contenga marcadores de formato para las cadenas de reemplazo, es necesario establecer values como referencia null (Nothing en Visual Basic).

Cuando deba proporcionarse información adicional para el evento, pueden especificarse con él datos binarios. Por ejemplo, el parámetro data puede utilizarse para incluir información sobre un error concreto. El Visor de eventos no interpreta los datos asociados del evento, sino que los muestra en un formato combinado de texto y hexadecimal. Los datos específicos de eventos han de utilizarse con moderación e incluirse únicamente cuando su utilidad parezca asegurada. También se pueden utilizar datos específicos del evento para almacenar información que la aplicación puede procesar de forma independiente del Visor de eventos. Por ejemplo, podría escribirse un visor específico para los eventos, o bien un programa que examinara el registro de eventos y creara informes con información sobre los datos específicos del evento.

Antes de utilizar WriteEvent, deberá establecerse la propiedad Source en el componente EventLog anterior al componente. El origen deberá estar configurado para escribir entradas adaptadas en el Registro y, como mínimo, deberá tener un archivo de recursos de mensajes definido.

El origen de eventos deberá crearse y configurarse antes de escribir la primera entrada con él. El nuevo origen de eventos deberá crearse durante la instalación de la aplicación. Esto permite al sistema operativo actualizar con tiempo la lista de orígenes de eventos registrados y su configuración. Si el sistema operativo aún no ha actualizado la lista de orígenes de eventos y se intenta escribir un evento con el nuevo origen, se producirá un error en la operación de escritura. Para configurar un nuevo origen, puede utilizarse EventLogInstaller o el método CreateEventSource. Es necesario contar con derechos administrativos en el equipo para crear un nuevo origen de eventos.

NotaNota

Si no se especifica MachineName para la instancia de EventLog antes de llamar a WriteEvent, se asumirá que el nombre es el del equipo local (".").

El origen deberá configurarse para escribir o bien entradas adaptadas o bien cadenas directas. Deberá utilizarse el método WriteEntry cuando la aplicación escriba valores de cadena directamente en el registro de eventos.

Cuando una aplicación escriba entradas usando tanto identificadores de recursos como valores de cadena, deberán registrarse dos orígenes diferentes. Por ejemplo, puede configurarse un origen con archivos de recursos y usarlo en el método WriteEvent para escribir entradas en el registro de eventos mediante identificadores de recursos. A continuación, puede crearse otro origen sin archivos de recursos y usarlo en el método WriteEntry para escribir cadenas directamente en el registro de eventos.

NotaNota

Si se escribe una entrada en un equipo remoto, puede que el valor de la cadena message no sea el esperado si el equipo remoto no está ejecutando .NET Framework. Asimismo, la cadena message 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. Dado que una dirección de Protocolo de Internet, versión 6 (IPv6) puede contener esta secuencia de caracteres, no se puede registrar ningún mensaje de evento que contenga una dirección IPv6.

En el siguiente ejemplo se escriben dos entradas de auditoría en el registro de eventos myNewLog. En el ejemplo se crean, si aún no existen en el equipo local, un origen y un registro de eventos. El texto del mensaje del evento se especifica mediante un identificador de recursos de 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 );



El ejemplo utiliza el siguiente archivo de texto de mensaje, integrado en el recurso de biblioteca EventLogMsgs.dll. Un archivo de texto de mensaje es el origen desde el que se crea el archivo de recursos de mensaje. En el archivo de texto de mensaje se definen los identificadores de recursos y el texto para las cadenas de categoría, mensaje de eventos e 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
.

.NET Framework

Compatible con: 4.5.2, 4.5.1, 4.5, 4, 3.5, 3.0, 2.0

.NET Framework Client Profile

Compatible con: 4, 3.5 SP1

Windows Phone 8.1, Windows Phone 8, Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (no se admite el rol Server Core), Windows Server 2008 R2 (se admite el rol Server Core con SP1 o versiones posteriores; no se admite Itanium)

.NET Framework no admite todas las versiones de todas las plataformas. Para obtener una lista de las versiones compatibles, vea Requisitos de sistema de .NET Framework.

Adiciones de comunidad

AGREGAR
Mostrar:
© 2014 Microsoft