Dieser Artikel wurde manuell übersetzt. Bewegen Sie den Mauszeiger über die Sätze im Artikel, um den Originaltext anzuzeigen.
Übersetzung
Original
Dieser Artikel wurde noch nicht bewertet - Dieses Thema bewerten.

EventLog.WriteEvent-Methode (EventInstance, Object[])

Schreibt einen lokalisierten Eintrag in das Ereignisprotokoll.

Namespace:  System.Diagnostics
Assembly:  System (in System.dll)
[ComVisibleAttribute(false)]
public void WriteEvent(
	EventInstance instance,
	params Object[] values
)

Parameter

instance
Typ: System.Diagnostics.EventInstance
Eine EventInstance-Instanz, die einen lokalisierten Ereignisprotokolleintrag darstellt.
values
Typ: System.Object[]
Ein Array von Zeichenfolgen, die mit dem Meldungstext des Ereignisprotokolleintrags zusammengeführt werden sollen.
Ausnahme Bedingung
ArgumentException

Die Source-Eigenschaft von EventLog wurde nicht festgelegt.

– oder –

Die Methode hat versucht, eine neue Ereignisquelle zu registrieren, der Computername in MachineName ist jedoch ungültig.

- oder -

Die Quelle ist bereits für ein anderes Ereignisprotokoll registriert.

- oder -

instance.InstanceId ist kleiner als 0 oder größer als UInt16.MaxValue.

- oder -

values enthält mehr als 256 Elemente.

- oder -

Eines der values-Elemente ist länger als 32.766 Bytes.

- oder -

Der Quellenname führt dazu, dass der Registrierungsschlüsselpfad länger als 254 Zeichen ist.

ArgumentNullException

instance hat den Wert null.

InvalidOperationException

Der Registrierungsschlüssel für das Ereignisprotokoll konnte nicht geöffnet werden.

Win32Exception

Das Betriebssystem hat beim Schreiben des Ereigniseintrags in das Ereignisprotokoll einen Fehler gemeldet. Es ist kein Windows-Fehlercode verfügbar.

Verwenden Sie diese Methode, um einen lokalisierten Eintrag in das Ereignisprotokoll zu schreiben. Sie geben die Ereigniseigenschaften mit Ressourcenbezeichnern und nicht mit Zeichenfolgenwerten an. Die Ereignisanzeige verwendet die Ressourcenbezeichner zum Anzeigen der entsprechenden Zeichenfolgen aus der lokalisierten Ressourcendatei für die Source. Sie müssen die Quelle bei der entsprechenden Ressourcendatei registrieren, bevor Sie Ereignisse mit Ressourcenbezeichnern schreiben.

Die instance-Eingabeinstanz gibt die Ereignismeldung und die Ereigniseigenschaften an. Legen Sie die InstanceId der instance-Eingabe für die in der Meldungsressourcendatei der Quelle definierte Meldung fest. Sie können optional CategoryId und EntryType der instance-Eingabe festlegen, um die Kategorie und den Ereignistyp des Ereigniseintrags zu definieren. Sie können auch ein Array sprachenunabhängiger Zeichenfolgen zum Einfügen in den lokalisierten Meldungstext angeben. Legen Sie values auf null fest, wenn die Ereignismeldung keine Formatierungsplatzhalter für Ersetzungszeichenfolgen enthält.

Vor der Verwendung von WriteEvent müssen Sie die Source-Eigenschaft für die EventLog-Komponente festlegen. Die angegebene Quelle muss zum Schreiben lokalisierter Einträge in das Protokoll konfiguriert sein. Für die Quelle muss mindestens eine Meldungsressourcendatei definiert sein.

Sie müssen die Ereignisquelle erstellen und konfigurieren, bevor Sie den ersten Eintrag mit der Quelle schreiben. Erstellen Sie die neue Ereignisquelle während der Installation der Anwendung. Dies gibt dem Betriebssystem Gelegenheit, die Liste der registrierten Ereignisquellen und deren Konfiguration zu aktualisieren. Wenn die Liste der Ereignisquellen vom Betriebssystem nicht aktualisiert wurde und Sie versuchen, ein Ereignis für die neue Quelle zu schreiben, schlägt der Schreibvorgang fehl. Sie können eine neue Quelle entweder mithilfe eines EventLogInstaller oder mithilfe der CreateEventSource-Methode erstellen. Sie benötigen Administratorrechte für den Computer, um eine neue Ereignisquelle zu erstellen.

Die Quelle muss entweder zum Schreiben lokalisierter Einträge oder zum Schreiben direkter Zeichenfolgen konfiguriert werden. Verwenden Sie die WriteEntry-Methode, wenn die Anwendung Zeichenfolgenwerte direkt in das Ereignisprotokoll schreibt.

Wenn die Anwendung beim Schreiben von Einträgen sowohl Ressourcenbezeichner als auch Zeichenfolgenwerte verwendet, müssen Sie zwei getrennte Quellen registrieren. Konfigurieren Sie beispielsweise eine Quelle mit Ressourcendateien, und verwenden Sie diese Quelle dann in der WriteEvent-Methode, um Einträge mithilfe von Ressourcenbezeichnern in das Ereignisprotokoll zu schreiben. Erstellen Sie dann eine andere Quelle ohne Ressourcendateien, und verwenden Sie diese Quelle in der WriteEntry-Methode, um Zeichenfolgen mithilfe dieser Quelle direkt in das Ereignisprotokoll zu schreiben.

Hinweis Hinweis

Wenn Sie einen Eintrag auf einem Remotecomputer schreiben, ist der Wert der message-Zeichenfolge möglicherweise nicht erwartungsgemäß, wenn auf dem Remotecomputer .NET Framework nicht ausgeführt wird. Auch kann die message-Zeichenfolge nicht %n enthalten, wobei n ein ganzzahliger Wert (z. B. %1) ist, da die Ereignisanzeige sie als Einfügezeichenfolge behandelt. Da eine IPv6 (Internet Protocol, Version 6)-Adresse diese Zeichensequenz enthalten kann, können Sie keine Ereignismeldung protokollieren, die eine IPv6-Adresse enthält.

Im folgenden Beispiel werden zwei Überwachungseinträge in das Ereignisprotokoll myNewLog geschrieben. Im Beispiel werden eine neue Ereignisquelle und ein neues Ereignisprotokoll erstellt, wenn sie auf dem lokalen Computer nicht vorhanden sind. Der Ereignismeldungstext wird mithilfe eines Ressourcenbezeichners in einer Ressourcendatei angegeben.



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



Im Beispiel wird die folgende Meldungstextdatei verwendet, die in der Ressourcenbibliothek EventLogMsgs.dll integriert ist. Eine Meldungstextdatei bildet die Quelle für die Erstellung einer Meldungsressourcendatei. In der Meldungstextdatei sind die Ressourcenbezeichner und der Text für die Kategorie, die Ereignismeldung und die Parametereinfügungs-Zeichenfolgen definiert.

; // EventLogMsgs.mc
; // ********************************************************

; // Use the following commands to build this file:

; //   mc -s EventLogMsgs.mc
; //   rc EventLogMsgs.rc
; //   link /DLL /SUBSYSTEM:WINDOWS /NOENTRY /MACHINE:x86 EventLogMsgs.Res 
; // ********************************************************

; // - Event categories -
; // Categories must be numbered consecutively starting at 1.
; // ********************************************************

MessageId=0x1
Severity=Success
SymbolicName=INSTALL_CATEGORY
Language=English
Installation
.

MessageId=0x2
Severity=Success
SymbolicName=QUERY_CATEGORY
Language=English
Database Query
.

MessageId=0x3
Severity=Success
SymbolicName=REFRESH_CATEGORY
Language=English
Data Refresh
.

; // - Event messages -
; // *********************************

MessageId = 1000
Severity = Success
Facility = Application
SymbolicName = AUDIT_SUCCESS_MESSAGE_ID_1000
Language=English
My application message text, in English, for message id 1000, called from %1.
.

MessageId = 1001
Severity = Warning
Facility = Application
SymbolicName = AUDIT_FAILED_MESSAGE_ID_1001
Language=English
My application message text, in English, for message id 1001, called from %1.
.


MessageId = 1002
Severity = Success
Facility = Application
SymbolicName = GENERIC_INFO_MESSAGE_ID_1002
Language=English
My generic information message in English, for message id 1002.
.


MessageId = 1003
Severity = Warning
Facility = Application
SymbolicName = GENERIC_WARNING_MESSAGE_ID_1003
Language=English
My generic warning message in English, for message id 1003, called from %1.
.


MessageId = 1004
Severity = Success
Facility = Application
SymbolicName = UPDATE_CYCLE_COMPLETE_MESSAGE_ID_1004
Language=English
The update cycle is complete for %%5002.
.


MessageId = 1005
Severity = Warning
Facility = Application
SymbolicName = SERVER_CONNECTION_DOWN_MESSAGE_ID_1005
Language=English
The refresh operation did not complete because the connection to server %1 could not be established.
.


; // - Event log display name -
; // ********************************************************


MessageId = 5001
Severity = Success
Facility = Application
SymbolicName = EVENT_LOG_DISPLAY_NAME_MSGID
Language=English
Sample Event Log
.



; // - Event message parameters -
; //   Language independent insertion strings
; // ********************************************************


MessageId = 5002
Severity = Success
Facility = Application
SymbolicName = EVENT_LOG_SERVICE_NAME_MSGID
Language=English
SVC_UPDATE.EXE
.

.NET Framework

Unterstützt in: 4, 3.5, 3.0, 2.0

.NET Framework Client Profile

Unterstützt in: 4, 3.5 SP1

Windows 7, Windows Vista SP1 oder höher, Windows XP SP3, Windows XP SP2 x64 Edition, Windows Server 2008 (Server Core wird nicht unterstützt), Windows Server 2008 R2 (Server Core wird mit SP1 oder höher unterstützt), Windows Server 2003 SP2

.NET Framework unterstützt nicht alle Versionen sämtlicher Plattformen. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen für .NET Framework.

Datum

Versionsgeschichte

Grund

Mai 2010

Hinweis zur Verwendung von %n im message-Parameter wurde hinzugefügt.

Korrektur inhaltlicher Fehler.

Fanden Sie dies hilfreich?
(1500 verbleibende Zeichen)
Community-Inhalt Hinzufügen
Anmerkungen FAQ