EventLog.WriteEvent Metodo
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
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[])
- Origine:
- EventLog.cs
- Origine:
- EventLog.cs
- Origine:
- 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. Create 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[])
- Origine:
- EventLog.cs
- Origine:
- EventLog.cs
- Origine:
- 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. Create 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.
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 Ip 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[])
- Origine:
- EventLog.cs
- Origine:
- EventLog.cs
- Origine:
- 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
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 con dati aggiuntivi specifici dell'evento 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.
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 associato e visualizza i dati in un formato esadecimale e di testo combinato. Usare i dati specifici dell'evento con moderazione; includerlo solo se si è certi che sarà utile. È anche possibile usare dati specifici dell'evento per archiviare le informazioni che l'applicazione può elaborare indipendentemente dal Visualizzatore eventi. Ad esempio, è possibile scrivere un visualizzatore in modo specifico 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 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. Create 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.
Nota
Se non si specifica un oggetto per l'istanza MachineNameEventLog prima di chiamare WriteEvent, verrà utilizzato 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 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.
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 Ip 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[])
- Origine:
- EventLog.cs
- Origine:
- EventLog.cs
- Origine:
- 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. 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 con dati aggiuntivi specifici dell'evento 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.
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 associato e visualizza i dati in un formato esadecimale e di testo combinato. Usare i dati specifici dell'evento con moderazione; includerlo solo se si è certi che sarà utile. È anche possibile usare dati specifici dell'evento per archiviare le informazioni che l'applicazione può elaborare indipendentemente dal Visualizzatore eventi. Ad esempio, è possibile scrivere un visualizzatore in modo specifico 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. Create 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.