Questo articolo è stato tradotto automaticamente. Per visualizzare l'articolo in inglese, selezionare la casella di controllo Inglese. È possibile anche visualizzare il testo inglese in una finestra popup posizionando il puntatore del mouse sopra il testo.
Traduzione
Inglese

Metodo EventLog.WriteEvent (EventInstance, Byte[], Object[])

 

Data di pubblicazione: ottobre 2016

Scrive una voce di registro eventi con i dati dell'evento specifici, le stringhe di sostituzione del messaggio e i dati binari associati.

Spazio dei nomi:   System.Diagnostics
Assembly:  System (in System.dll)

[ComVisibleAttribute(false)]
public void WriteEvent(
	EventInstance instance,
	byte[] data,
	params object[] values
)

Parametri

instance
Type: System.Diagnostics.EventInstance

Istanza EventInstance che rappresenta una voce del registro eventi localizzata.

data
Type: System.Byte[]

Matrice di byte contenente i dati binari associati alla voce.

values
Type: System.Object[]

Matrice di stringhe per il merge della voce del registro eventi nel testo del messaggio.

Exception Condition
ArgumentException

Il Source di proprietà di EventLog non è stata impostata.

-oppure-

Il metodo ha tentato di registrare una nuova origine evento, ma il nome del computer in MachineName non è valido.

-oppure-

L'origine è già registrato per un registro eventi diverso.

-oppure-

instance.InstanceId è minore di zero o maggiore di UInt16.MaxValue.

-oppure-

values dispone di più di 256 elementi.

-oppure-

Uno del values elementi è superiore a 32766 byte.

-oppure-

I risultati di nome di origine in un percorso della chiave del Registro di sistema più lungo di 254 caratteri.

ArgumentNullException

instance è null.

InvalidOperationException

Impossibile aprire la chiave del Registro di sistema per il registro eventi.

Win32Exception

Il sistema operativo ha segnalato un errore durante la scrittura della voce dell'evento nel registro eventi. Un codice di errore di Windows non è disponibile.

Utilizzare questo metodo per scrivere una voce localizzata con dati aggiuntivi specifici dell'evento nel registro eventi. Specificare le proprietà evento con identificatori di risorsa, piuttosto che i valori di stringa. Il Visualizzatore eventi utilizza gli identificatori di risorsa per visualizzare le stringhe corrispondenti dal file di risorse localizzato per il Source. Prima di scrivere eventi tramite identificatori di risorsa, è necessario registrare l'origine con il corrispondente file di risorse.

L'input instance istanza specifica il messaggio di evento e proprietà. Impostare il InstanceId del instance di input per il messaggio definito nel file di risorse del messaggio di origine. È anche possibile impostare il CategoryId e EntryType di instance input per definire il tipo di evento e di categoria della voce di evento. È inoltre possibile specificare una matrice di stringhe indipendenti dal linguaggio per inserire nel testo del messaggio. Impostare values per null Se il messaggio di evento non contiene segnaposto di formattazione per le stringhe di sostituzione.

Specificare i dati binari con un evento quando è necessario fornire dettagli aggiuntivi per l'evento. Ad esempio, utilizzare il data parametro per includere informazioni su un errore specifico. Il Visualizzatore eventi non interpreta i dati di evento associato. Visualizza i dati in formato esadecimale e di testo combinato. Utilizzare i dati specifici dell'evento sporadicamente; include solo se si è certi che possa risultare utile. È inoltre possibile utilizzare dati specifici dell'evento per archiviare le informazioni che dell'applicazione può elaborare in modo indipendente il Visualizzatore eventi. Ad esempio, si potrebbe scrivere un visualizzatore specifico per gli eventi o scrivere un programma che analizza il log eventi e consente di creare report che includono le informazioni dai dati specifici dell'evento.

È necessario impostare il Source proprietà di EventLog componente prima del componente prima di utilizzare WriteEvent. L'origine specificata deve essere configurato per la scrittura di voci localizzate nel log. l'origine deve contenere almeno un file di risorse di messaggio definito.

È necessario creare e configurare l'origine evento prima di scrivere la prima voce con l'origine. Creare la nuova origine eventi durante l'installazione dell'applicazione. Questo consente di tempo per il sistema operativo aggiornare l'elenco delle origini eventi registrati e la relativa configurazione. Se il sistema operativo non è aggiornato l'elenco delle origini evento e si tenta di scrivere un evento con la nuova origine, che l'operazione di scrittura avrà esito negativo. È possibile configurare una nuova origine mediante un EventLogInstaller, o tramite il CreateEventSource metodo. È necessario disporre dei diritti amministrativi sul computer per creare una nuova origine evento.

System_CAPS_noteNota

Se non si specifica un MachineName per il EventLog istanza prima di chiamare WriteEvent, il computer locale (".") verrà utilizzato.

L'origine deve essere configurata per la scrittura di voci localizzate o per la scrittura di stringhe dirette. Utilizzare il WriteEntry metodo se l'applicazione scrive valori stringa direttamente nel registro eventi.

Se l'applicazione scrive voci tramite identificatori di risorsa e i valori stringa, è necessario registrare due origini separate. Ad esempio, configurare un'origine dei file di risorse e quindi utilizzare tale origine nel WriteEvent metodo per scrivere voci tramite identificatori di risorsa nel registro eventi. Quindi creare un'origine diversa senza file di risorse e utilizzarla nel WriteEntry metodo per scrivere stringhe direttamente nel log eventi.

System_CAPS_noteNota

Se si scrive una voce per un computer remoto, il valore di message stringa potrebbe non essere quello previsto se il computer remoto non è in esecuzione .NET Framework. Inoltre, il message stringa non può contenere %n, dove n è un valore intero (ad esempio, %1), perché il Visualizzatore eventi considera una stringa di inserimento. Poiché un protocollo Internet versione 6 (IPv6) indirizzo può contenere questa sequenza di caratteri, non è possibile accedere un messaggio di evento che contiene un indirizzo IPv6.

Nell'esempio seguente scrive due voci nel registro eventi di controllo myNewLog. Nell'esempio viene creata una nuova origine evento e un nuovo registro eventi se non sono presenti nel computer locale. Il testo del messaggio di evento è specificato utilizzando un identificatore di risorsa in un file di risorse.


// 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); 

Nell'esempio viene utilizzato il seguente file di testo di messaggio, compilato nella libreria di risorse EventLogMsgs. Un file di testo del messaggio è l'origine da cui viene creato il file di risorse del messaggio. Il file di testo del messaggio definisce gli identificatori di risorsa e il testo per la categoria, messaggio di evento e le stringhe di inserimento di parametro.

; // 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
.

EventLogPermission

for writing the event log information on the computer. Associated enumeration: F:System.Diagnostics.EventLogPermissionAccess.Write

.NET Framework
Disponibile da 2.0
Torna all'inizio
Mostra: