2009-05-06 10 views
3

Wie kann ich XML-Daten in das Windows-Ereignisprotokoll schreiben?XML-Daten in das Windows-Ereignisprotokoll einfügen

Ich habe festgestellt, dass es eine Möglichkeit gibt, XML in das Windows-Ereignisprotokoll einzufügen (und nicht einfach in die Beschreibung einzufügen). Der Effekt ist, dass Sie nur Ihre Beschreibungsnachricht in der Ansicht General unter Windows Vista erhalten. Sie können Ihre XML-Daten in der Ansicht Details sehen. Wenn Sie das Optionsfeld Friendly auswählen, wird es unter dem Knoten Event Data angezeigt. Wenn Sie die XML-Ansicht auswählen, können Sie das XML sehen.

Ich dachte, dass das RawData-Byte-Array in der EventLog.WriteEntry()-Methode würde mir dies ermöglichen. Ich habe versucht, die Ausgabe von XMLWriter hineinzufüllen. Dadurch werden Daten in das Ereignisprotokoll geschrieben, aber statt XML wird es als binär angezeigt.

Antwort

3

Sofern ich mich nicht irre, müssen Sie, um XML in das Crimson/Vista-Ereignisprotokoll schreiben zu können, ein Manifest erstellen und registrieren, das Ihnen die entsprechenden Kanäle und Ereignisse liefert. Dann müssen Sie das Manifest mit der Message Compiler (mc.exe) in the WindowsSDK kompilieren.

Wenn Sie dann von C# aus protokollieren möchten, müssen Sie einen verwalteten Provider erstellen, um die Ereignisprotokollierungs-API zu umbrechen. Dies ist ein wenig schwieriger, weil Sie PInvoke verwenden müssen, um an die API zu gelangen.

Es gibt Blogposts, wie man diesen ganzen Prozess macht here.

2

Sie haben ein Beispiel in Windows SDK (ver 6.1) namens EventProvider.
Es ist ein C# -Anbieter (benötigt Vista und bis zur Arbeit), die die neue Event Log API (AKA crimson) verwendet.
Dieses Beispiel zeigt, wie benutzerdefinierte Daten hinzugefügt werden (Menge andere Dinge).

2

Für .Net 4.5 Suchen Sie in der neuen EventSource, es unterstützt auch das automatische Generieren des Manifests.