EventLog.WriteEvent Metodo

Definizione

Scrive una voce di evento localizzata nel registro eventi.

Overload

WriteEvent(String, EventInstance, Object[])

Scrive una voce di registro eventi con i dati dell'evento specifici e le stringhe di sostituzione del messaggio, usando l'origine eventi registrata specificata.

WriteEvent(EventInstance, Object[])

Scrive una voce localizzata nel registro eventi.

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

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

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

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

WriteEvent(String, EventInstance, Object[])

Source:
EventLog.cs
Source:
EventLog.cs
Source:
EventLog.cs

Scrive una voce di registro eventi con i dati dell'evento specifici e le stringhe di sostituzione del messaggio, usando l'origine eventi registrata specificata.

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())

Parametri

source
String

Nome dell'origine eventi registrata per l'applicazione nel computer specificato.

instance
EventInstance

Istanza EventInstance che rappresenta una voce del registro eventi localizzata.

values
Object[]

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

Eccezioni

Il valore source è una stringa vuota ("").

-oppure-

Il valore source è null.

-oppure-

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

-oppure-

values presenta più di 256 elementi.

-oppure-

Uno degli elementi di values presenta una lunghezza superiore a 32766 byte.

-oppure-

A causa del nome origine una chiave del Registro di sistema risulta più lunga di 254 caratteri.

instance è null.

Non è possibile aprire la chiave del Registro di sistema per il log eventi.

È stato riscontrato un errore durante la scrittura della voce di evento nel log eventi. Non è disponibile un codice di errore di Windows.

Esempio

L'esempio seguente scrive una voce di evento informativo e una voce di evento di avviso in un registro eventi esistente. Il testo del messaggio di evento viene specificato usando un identificatore di risorsa in un file di risorse. Nell'esempio si presuppone che il file di risorse corrispondente sia stato registrato per l'origine.

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

Nell'esempio viene usato il file di testo del messaggio seguente, integrato nella libreria di risorse EventLogMsgs.dll. 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, il messaggio di evento e le stringhe di inserimento dei parametri.

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

Commenti

Utilizzare questo metodo per scrivere una voce localizzata nel registro eventi usando un'origine già registrata come origine evento per il log appropriato. Specificare le proprietà dell'evento con identificatori di risorsa anziché valori stringa. Il Visualizzatore eventi usa gli identificatori di risorsa per visualizzare le stringhe corrispondenti dal file di risorse localizzato per l'origine. È necessario registrare l'origine con il file di risorse corrispondente prima di scrivere eventi usando gli identificatori di risorsa.

L'istanza di input instance specifica il messaggio e le proprietà dell'evento. Impostare l'oggetto InstanceId dell'input instance per il messaggio definito nel file di risorse del messaggio di origine. Facoltativamente, è possibile impostare e CategoryIdEntryType dell'input instance per definire la categoria e il tipo di evento della voce dell'evento. È anche possibile specificare una matrice di stringhe indipendenti dalla lingua da inserire nel testo localizzato del messaggio. Impostare values su null se il messaggio di evento non contiene segnaposto di formattazione per le stringhe di sostituzione.

L'origine specificata deve essere registrata per un registro eventi prima di usare WriteEvent. L'origine specificata deve essere configurata per la scrittura di voci localizzate nel log; l'origine deve avere almeno un file di risorse del messaggio definito.

È necessario creare e configurare l'origine evento prima di scrivere la prima voce con l'origine. Creare la nuova origine evento durante l'installazione dell'applicazione. Ciò consente al sistema operativo di aggiornare l'elenco di origini eventi registrate e la relativa configurazione. Se il sistema operativo non ha aggiornato l'elenco delle origini eventi e si tenta di scrivere un evento con la nuova origine, l'operazione di scrittura avrà esito negativo. È possibile configurare una nuova origine usando un EventLogInstalleroggetto o usando il CreateEventSource metodo . Per creare una nuova origine evento, è necessario disporre dei diritti amministrativi nel computer.

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

Se l'applicazione scrive voci usando sia identificatori di risorsa che valori stringa, è necessario registrare due origini separate. Ad esempio, configurare un'origine con i file di risorse e quindi usare tale origine nel WriteEvent metodo per scrivere voci usando gli identificatori di risorsa nel registro eventi. Creare quindi un'origine diversa senza file di risorse e usare tale origine nel metodo per scrivere stringhe direttamente nel WriteEntry registro eventi usando tale origine.

Vedi anche

Si applica a

WriteEvent(EventInstance, Object[])

Source:
EventLog.cs
Source:
EventLog.cs
Source:
EventLog.cs

Scrive una voce localizzata nel registro eventi.

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())

Parametri

instance
EventInstance

Istanza EventInstance che rappresenta una voce del registro eventi localizzata.

values
Object[]

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

Attributi

Eccezioni

La proprietà Source dell'oggetto EventLog non è stata impostata.

-oppure-

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

-oppure-

L'origine è già registrata con un log eventi diverso.

-oppure-

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

-oppure-

values presenta più di 256 elementi.

-oppure-

Uno degli elementi di values presenta una lunghezza superiore a 32766 byte.

-oppure-

A causa del nome origine una chiave del Registro di sistema risulta più lunga di 254 caratteri.

instance è null.

Non è possibile aprire la chiave del Registro di sistema per il log eventi.

È stato riscontrato un errore durante la scrittura della voce di evento nel log eventi. Non è disponibile un codice di errore di Windows.

Esempio

L'esempio seguente scrive due voci di controllo nel registro eventi myNewLog. Nell'esempio viene creata una nuova origine evento e un nuovo registro eventi, se non esistono nel computer locale. Il testo del messaggio di evento viene specificato usando 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 = 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)

Nell'esempio viene usato il file di testo del messaggio seguente, integrato nella libreria di risorse EventLogMsgs.dll. 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, il messaggio di evento e le stringhe di inserimento dei parametri.

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

Commenti

Utilizzare questo metodo per scrivere una voce localizzata nel registro eventi. Specificare le proprietà dell'evento con identificatori di risorsa anziché valori stringa. Il Visualizzatore eventi usa gli identificatori di risorsa per visualizzare le stringhe corrispondenti dal file di risorse localizzato per .Source È necessario registrare l'origine con il file di risorse corrispondente prima di scrivere eventi usando gli identificatori di risorsa.

L'istanza di input instance specifica il messaggio e le proprietà dell'evento. Impostare l'oggetto InstanceId dell'input instance per il messaggio definito nel file di risorse del messaggio di origine. Facoltativamente, è possibile impostare e CategoryIdEntryType dell'input instance per definire la categoria e il tipo di evento della voce dell'evento. È anche possibile specificare una matrice di stringhe indipendenti dalla lingua da inserire nel testo localizzato del messaggio. Impostare values su null se il messaggio di evento non contiene segnaposto di formattazione per le stringhe di sostituzione.

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

È necessario creare e configurare l'origine evento prima di scrivere la prima voce con l'origine. Creare la nuova origine evento durante l'installazione dell'applicazione. Ciò consente al sistema operativo di aggiornare l'elenco di origini eventi registrate e la relativa configurazione. Se il sistema operativo non ha aggiornato l'elenco delle origini eventi e si tenta di scrivere un evento con la nuova origine, l'operazione di scrittura avrà esito negativo. È possibile configurare una nuova origine usando un EventLogInstalleroggetto o usando il CreateEventSource metodo . È necessario disporre dei diritti amministrativi nel computer per creare una nuova origine evento.

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

Se l'applicazione scrive voci con identificatori di risorsa e valori stringa, è necessario registrare due origini separate. Ad esempio, configurare un'origine WriteEvent con i file di risorse e quindi usare tale origine nel metodo per scrivere voci usando identificatori di risorsa nel registro eventi. Creare quindi un'origine diversa senza file di risorse e usare tale origine nel metodo per scrivere stringhe direttamente nel WriteEntry registro eventi usando tale origine.

Nota

Se si scrive una voce in un computer remoto, il valore della message stringa potrebbe non essere quello previsto se il computer remoto non esegue .NET Framework. Inoltre, la message stringa non può contenere %n, dove n è un valore intero ,ad esempio %1, perché il visualizzatore eventi lo considera come stringa di inserimento. Poiché un indirizzo Internet Protocol versione 6 (IPv6) può contenere questa sequenza di caratteri, non è possibile registrare un messaggio di evento contenente un indirizzo IPv6.

Vedi anche

Si applica a

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

Source:
EventLog.cs
Source:
EventLog.cs
Source:
EventLog.cs

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

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())

Parametri

instance
EventInstance

Istanza EventInstance che rappresenta una voce del registro eventi localizzata.

data
Byte[]

Matrice di byte contenente i dati binari associati alla voce.

values
Object[]

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

Attributi

Eccezioni

La proprietà Source dell'oggetto EventLog non è stata impostata.

-oppure-

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

-oppure-

L'origine è già registrata con un log eventi diverso.

-oppure-

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

-oppure-

values presenta più di 256 elementi.

-oppure-

Uno degli elementi di values presenta una lunghezza superiore a 32766 byte.

-oppure-

A causa del nome origine una chiave del Registro di sistema risulta più lunga di 254 caratteri.

instance è null.

Non è possibile aprire la chiave del Registro di sistema per il log eventi.

È stato riscontrato un errore durante la scrittura della voce di evento nel log eventi. Non è disponibile un codice di errore di Windows.

Esempio

Nell'esempio seguente vengono scritti due voci di controllo nel registro myNewLogeventi. L'esempio crea una nuova origine evento e un nuovo registro eventi se non esistono nel computer locale. Il testo del messaggio di evento viene specificato usando 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 = 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)

Nell'esempio viene usato il file di testo del messaggio seguente, integrato nella libreria di risorse EventLogMsgs.dll. 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, il messaggio di evento e le stringhe di inserimento dei parametri.

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

Commenti

Usare questo metodo per scrivere una voce localizzata con dati specifici dell'evento aggiuntivi nel registro eventi. Specificare le proprietà dell'evento con identificatori di risorsa anziché valori stringa. Il Visualizzatore eventi usa gli identificatori di risorsa per visualizzare le stringhe corrispondenti dal file di risorse localizzato per .Source È necessario registrare l'origine con il file di risorse corrispondente prima di scrivere eventi usando identificatori di risorsa.

L'istanza di input instance specifica il messaggio e le proprietà dell'evento. Impostare l'oggetto InstanceId dell'input instance per il messaggio definito nel file di risorse del messaggio di origine. Facoltativamente, è possibile impostare e dell'input CategoryId per definire la categoria e il tipo di evento della voce dell'eventoinstance.EntryType È anche possibile specificare una matrice di stringhe indipendenti dal linguaggio da inserire nel testo del messaggio localizzato. Impostare values su null se il messaggio di evento non contiene segnaposto di formattazione per le stringhe sostitutive.

Specificare i dati binari con un evento quando è necessario fornire dettagli aggiuntivi per l'evento. Ad esempio, usare il data parametro per includere informazioni su un errore specifico. Il Visualizzatore eventi non interpreta i dati dell'evento associati. Visualizza i dati in un formato esadecimale esadecimale combinato. Usare i dati specifici dell'evento in modo spandimento; includerlo solo se sei sicuro che sarà utile. È anche possibile usare dati specifici dell'evento per archiviare informazioni che l'applicazione può elaborare in modo indipendente dal Visualizzatore eventi. Ad esempio, è possibile scrivere un visualizzatore specificamente per gli eventi o scrivere un programma che analizza il registro eventi e crea report che includono informazioni dai dati specifici dell'evento.

È necessario impostare la proprietà sul SourceEventLog componente prima del componente prima di usare WriteEvent. L'origine specificata deve essere configurata per la scrittura di voci localizzate nel log; l'origine deve avere almeno un file di risorse del messaggio definito.

È necessario creare e configurare l'origine evento prima di scrivere la prima voce con l'origine. Creare la nuova origine evento durante l'installazione dell'applicazione. Ciò consente al sistema operativo di aggiornare l'elenco di origini eventi registrate e la relativa configurazione. Se il sistema operativo non ha aggiornato il relativo elenco di origini eventi e si tenta di scrivere un evento con la nuova origine, l'operazione di scrittura avrà esito negativo. È possibile configurare una nuova origine usando un EventLogInstalleroggetto o usando il CreateEventSource metodo . È necessario disporre dei diritti amministrativi nel computer per creare una nuova origine evento.

Nota

Se non si specifica un oggetto MachineName per l'istanza EventLog prima di chiamare WriteEvent, viene assunto il computer locale (".").

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

Se l'applicazione scrive voci con identificatori di risorsa e valori stringa, è necessario registrare due origini separate. Ad esempio, configurare un'origine WriteEvent con i file di risorse e quindi usare tale origine nel metodo per scrivere voci usando identificatori di risorsa nel registro eventi. Creare quindi un'origine diversa senza file di risorse e usare tale origine nel metodo per scrivere stringhe direttamente nel WriteEntry registro eventi usando tale origine.

Nota

Se si scrive una voce in un computer remoto, il valore della message stringa potrebbe non essere quello previsto se il computer remoto non esegue .NET Framework. Inoltre, la message stringa non può contenere %n, dove n è un valore intero ,ad esempio %1, perché il visualizzatore eventi lo considera come stringa di inserimento. Poiché un indirizzo Internet Protocol versione 6 (IPv6) può contenere questa sequenza di caratteri, non è possibile registrare un messaggio di evento contenente un indirizzo IPv6.

Vedi anche

Si applica a

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

Source:
EventLog.cs
Source:
EventLog.cs
Source:
EventLog.cs

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

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())

Parametri

source
String

Nome dell'origine eventi registrata per l'applicazione nel computer specificato.

instance
EventInstance

Istanza EventInstance che rappresenta una voce del registro eventi localizzata.

data
Byte[]

Matrice di byte contenente i dati binari associati alla voce.

values
Object[]

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

Eccezioni

Il valore source è una stringa vuota ("").

-oppure-

Il valore source è null.

-oppure-

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

-oppure-

values presenta più di 256 elementi.

-oppure-

Uno degli elementi di values presenta una lunghezza superiore a 32766 byte.

-oppure-

A causa del nome origine una chiave del Registro di sistema risulta più lunga di 254 caratteri.

instance è null.

Non è possibile aprire la chiave del Registro di sistema per il log eventi.

È stato riscontrato un errore durante la scrittura della voce di evento nel log eventi. Non è disponibile un codice di errore di Windows.

Esempio

L'esempio seguente scrive una voce di evento informativo e una voce di evento di avviso in un registro eventi esistente. Il testo del messaggio di evento viene specificato usando un identificatore di risorsa in un file di risorse. L'esempio presuppone che il file di risorse corrispondente sia stato registrato per l'origine.

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

Nell'esempio viene usato il file di testo del messaggio seguente, integrato nella libreria di risorse EventLogMsgs.dll. 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, il messaggio di evento e le stringhe di inserimento dei parametri.

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

Commenti

Usare questo metodo per scrivere una voce localizzata con dati specifici dell'evento aggiuntivi nel registro eventi, usando un'origine già registrata come origine evento per il log appropriato. Specificare le proprietà dell'evento con identificatori di risorsa anziché valori stringa. Il Visualizzatore eventi usa gli identificatori di risorsa per visualizzare le stringhe corrispondenti dal file di risorse localizzato per l'origine. È necessario registrare l'origine con il file di risorse corrispondente prima di scrivere eventi usando identificatori di risorsa.

L'istanza di input instance specifica il messaggio e le proprietà dell'evento. Impostare l'oggetto InstanceId dell'input instance per il messaggio definito nel file di risorse del messaggio di origine. Facoltativamente, è possibile impostare e dell'input CategoryId per definire la categoria e il tipo di evento della voce dell'eventoinstance.EntryType È anche possibile specificare una matrice di stringhe indipendenti dal linguaggio da inserire nel testo del messaggio localizzato. Impostare values su null se il messaggio di evento non contiene segnaposto di formattazione per le stringhe sostitutive.

Specificare i dati binari con un evento quando è necessario fornire dettagli aggiuntivi per l'evento. Ad esempio, usare il data parametro per includere informazioni su un errore specifico. Il Visualizzatore eventi non interpreta i dati dell'evento associati. Visualizza i dati in un formato esadecimale esadecimale combinato. Usare i dati specifici dell'evento in modo spandimento; includerlo solo se sei sicuro che sarà utile. È anche possibile usare dati specifici dell'evento per archiviare informazioni che l'applicazione può elaborare in modo indipendente dal Visualizzatore eventi. Ad esempio, è possibile scrivere un visualizzatore specificamente per gli eventi o scrivere un programma che analizza il registro eventi e crea report che includono informazioni dai dati specifici dell'evento.

L'origine specificata deve essere registrata per un registro eventi prima di usare WriteEvent. L'origine specificata deve essere configurata per la scrittura di voci localizzate nel log; l'origine deve avere almeno un file di risorse del messaggio definito.

È necessario creare e configurare l'origine evento prima di scrivere la prima voce con l'origine. Creare la nuova origine evento durante l'installazione dell'applicazione. Ciò consente al sistema operativo di aggiornare l'elenco di origini eventi registrate e la relativa configurazione. Se il sistema operativo non ha aggiornato il relativo elenco di origini eventi e si tenta di scrivere un evento con la nuova origine, l'operazione di scrittura avrà esito negativo. È possibile configurare una nuova origine usando un EventLogInstalleroggetto o usando il CreateEventSource metodo . È necessario disporre dei diritti amministrativi nel computer per creare una nuova origine evento.

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

Se l'applicazione scrive voci con identificatori di risorsa e valori stringa, è necessario registrare due origini separate. Ad esempio, configurare un'origine WriteEvent con i file di risorse e quindi usare tale origine nel metodo per scrivere voci usando identificatori di risorsa nel registro eventi. Creare quindi un'origine diversa senza file di risorse e usare tale origine nel metodo per scrivere stringhe direttamente nel WriteEntry registro eventi usando tale origine.

Vedi anche

Si applica a