Exemplarische Vorgehensweise: Auswerten von Ereignisprotokollen, Ereignisquellen und Einträgen
Aktualisiert: November 2007
In dieser exemplarischen Vorgehensweise werden die Hauptfeatures der Ereignisprotokollierung in der Visual Studio-Anwendung erläutert. Im Rahmen dieser exemplarischen Vorgehensweise erhalten Sie Informationen zu folgenden Themen:
Erstellen einer EventLog-Komponente.
Schreiben von Code für das Erstellen und Löschen benutzerdefinierter Ereignisprotokolle.
Schreiben von Einträgen unterschiedlicher Typen in das benutzerdefinierte Protokoll.
Lesen von Einträgen aus dem benutzerdefinierten Protokoll.
Überprüfen des Vorhandenseins von Protokollen und Ereignisquellen.
Löschen von Protokolleinträgen.
Überprüfen der Ergebnisse der Ereignisprotokollierung mithilfe des Server-Explorers.
Hinweis: |
---|
Ihr Computer zeigt möglicherweise für einige der Elemente der Visual Studio-Benutzeroberfläche in der folgenden Anleitung andere Namen oder Standorte an. Diese Elemente sind von der jeweiligen Visual Studio-Version und den verwendeten Einstellungen abhängig. Weitere Informationen finden Sie unter Visual Studio-Einstellungen. |
Erstellen der Benutzeroberfläche
In dieser exemplarischen Vorgehensweise erstellen Sie eine Windows-Anwendung und wenden verschiedene Steuerelemente auf diese an, um eine Reihe von Aktionen zur Ereignisprotokollierung zu starten.
So erstellen Sie ein Formular und Steuerelemente für Ihre Anwendung
Erstellen Sie im Dialogfeld Neues Projekt eine Windows-Anwendung für Visual Basic oder Visual C#, und nennen Sie diese EventLogApp1.
Fügen Sie dem Formular acht Schaltflächen hinzu, und legen Sie die folgenden Eigenschaften dafür fest:
Steuerelement
"Text"-Eigenschaft
"Name"-Eigenschaft
Button1
Benutzerdefiniertes Protokoll erstellen
CreateLog
Button2
Protokoll löschen
DeleteLog
Button3
Eintrag schreiben
WriteEntry
Button4
Protokoll löschen
ClearLog
Button5
Überprüfen, ob Protokoll vorhanden ist
VerifyLog
Button6
Überprüfen, ob Quelle vorhanden ist
VerifySource
Button7
Ereignisquelle entfernen
RemoveSource
Button8
Eintrag lesen
ReadEntry
Führen Sie für die einzelnen Schaltflächen folgende Schritte aus:
Doppelklicken Sie im Designer auf die Schaltfläche, um einen standardmäßigen Ereignishandler für diese Schaltfläche zu erstellen. Daraufhin werden der Code-Editor und ein Stub für das Click-Ereignis der Schaltfläche angezeigt.
Kehren Sie zur Entwurfsansicht zurück, und doppelklicken Sie auf die nächste Schaltfläche.
Fahren Sie so lange fort, bis Sie für jede Schaltfläche einen standardmäßigen Ereignishandlerstub erstellt haben.
Ziehen Sie in der Toolbox von der Registerkarte Komponenten eine EventLog-Komponente auf das Formular.
Im Komponentenfach unten auf dem Formular wird eine EventLog-Komponenteninstanz angezeigt.
Erstellen und Löschen eines benutzerdefinierten Protokolls
In dieser Prozedur überprüfen Sie mithilfe der SourceExists-Methode, ob die verwendete Quelle bereits vorhanden ist. Anschließend rufen Sie die CreateEventSource-Methode mit dem Namen eines nicht vorhandenen Protokolls auf. Da dieses Protokoll nicht vorhanden ist, erstellt das System ein benutzerdefiniertes Protokoll für Sie, während der Code ausgeführt wird.
So erstellen Sie ein benutzerdefiniertes Protokoll
Suchen Sie im Code-Editor die Prozedur CreateLog_Click.
Geben Sie den folgenden Code ein. Das Ereignisprotokoll und die Quelle werden als Paar erstellt, und die Quelle kann nicht vorhanden sein, bevor das Ereignisprotokoll erstellt wurde. Nach der Erstellung des Ereignisprotokolls wird die EventLog-Komponente für den Zugriff auf das neue Ereignisprotokoll konfiguriert.
' Source cannot already exist before creating the log. If EventLog.SourceExists("Source1") Then EventLog.DeleteEventSource("Source1") End If ' Logs and Sources are created as a pair. EventLog.CreateEventSource("Source1", "NewLog1") ' Associate the EventLog component with the new log. EventLog1.Log = "NewLog1" EventLog1.Source = "Source1"
// Source cannot already exist before creating the log. if (System.Diagnostics.EventLog.SourceExists("Source1")) { System.Diagnostics.EventLog.DeleteEventSource("Source1"); } // Logs and Sources are created as a pair. System.Diagnostics.EventLog.CreateEventSource("Source1", "NewLog1"); // Associate the EventLog component with the new log. eventLog1.Log = "NewLog1"; eventLog1.Source = "Source1";
Sicherheitshinweis: Wenn Sie ein Ereignisprotokoll erstellen, müssen Sie festlegen, was geschehen soll, wenn die Ressource bereits vorhanden ist. Möglicherweise wurde das Ereignisprotokoll bereits von einem bösartigen Prozess erstellt, der nun darauf zugreifen kann. Wenn Sie dem Ereignisprotokoll Daten hinzufügen, kann der andere Prozess darauf zugreifen.
So löschen Sie ein benutzerdefiniertes Protokoll
Suchen Sie im Code-Editor die Prozedur DeleteLog_Click.
Geben Sie den folgenden Code ein:
If EventLog.Exists("NewLog1") Then EventLog.Delete("NewLog1") End If
if (System.Diagnostics.EventLog.Exists("NewLog1")) { System.Diagnostics.EventLog.Delete("NewLog1"); }
Schreiben von Einträgen in das Protokoll
In dieser Prozedur schreiben Sie mithilfe der erstellten EventLog-Komponenteninstanz Einträge in das Protokoll. Hierzu konfigurieren Sie die Komponente zunächst so, dass sie die zuvor erstellte Quellzeichenfolge verwendet. Anschließend geben Sie zwei Einträge an, die in das Protokoll geschrieben werden sollen: ein Informationsereignis und ein Fehlerereignis.
So schreiben Sie Einträge in das Protokoll
Suchen Sie im Code-Editor die Prozedur WriteEntry_Click.
Geben Sie den folgenden Code ein. In diesem Code wird zum Schreiben in das Ereignisprotokoll die überladene WriteEntry-Methode verwendet. Mit dem zweiten angezeigten Formular können Sie den Meldungstyp angeben. Wenn Sie die Einträge mit dem Server-Explorer im Abschnitt "Testen des Codes" (siehe unten) anzeigen, werden die unterschiedlichen Eintragstypen mit unterschiedlichen Symbolen dargestellt.
EventLog1.WriteEntry("This is an informational message") EventLog1.WriteEntry("This is an error message", _ Diagnostics.EventLogEntryType.Error)
eventLog1.WriteEntry("This is an informational message"); eventLog1.WriteEntry("This is an error message", System.Diagnostics.EventLogEntryType.Error);
Löschen von Protokolleinträgen
In dieser Prozedur entfernen Sie mithilfe der erstellten Clear-Methode vorhandene Einträge aus dem benutzerdefinierten Protokoll.
So löschen Sie Protokolleinträge
Suchen Sie im Code-Editor die Prozedur ClearLog_Click.
Rufen Sie die Clear-Methode der EventLog-Komponenteninstanz auf:
EventLog1.Clear()
eventLog1.Clear();
Überprüfen des Vorhandenseins von Protokollen und Quellen
In diesem Verfahren erstellen Sie zwei Prozeduren. Mit der ersten können Sie prüfen, ob das benutzerdefinierte Protokoll vorhanden ist. Mit der anderen Prozedur lässt sich das Vorhandensein der Quellzeichenfolge überprüfen. Anhand dieser Prozeduren werden die Ergebnisse verschiedener Aktionen getestet, die Sie beim Ausführen des Projekts durchführen.
So überprüfen Sie, ob das benutzerdefinierte Protokoll vorhanden ist
Suchen Sie im Code-Editor die Prozedur VerifyLog_Click.
Erstellen Sie ein Meldungsfeld, das überprüft, ob das angegebene Ereignisprotokoll vorhanden ist, und dafür entweder True oder False ausgibt. Verwenden Sie den folgenden Code:
Dim logExists As Boolean = EventLog.Exists("NewLog1") MessageBox.Show("Does the log exist? " & logExists.ToString())
bool logExists = System.Diagnostics.EventLog.Exists("NewLog1"); MessageBox.Show("Does the log exist? " + logExists.ToString());
So überprüfen Sie, ob die Quelle vorhanden ist
Suchen Sie im Code-Editor die Prozedur VerifySource_Click.
Erstellen Sie ein Meldungsfeld, das überprüft, ob die angegebene Quelle vorhanden ist, und dafür entweder true oder false ausgibt. Verwenden Sie den folgenden Code:
Dim sourceExists As Boolean = EventLog.SourceExists("Source1") MessageBox.Show("Does the source exist? " + sourceExists.ToString())
bool sourceExists = System.Diagnostics.EventLog.SourceExists("Source1"); MessageBox.Show("Does the source exist? " + sourceExists.ToString());
Entfernen von Quellen
In dieser Prozedur schreiben Sie Code zum Löschen einer Quellzeichenfolge. Dafür müssen Sie zunächst sicherstellen, dass die betreffende Quelle (Source1) vorhanden ist. Anschließend rufen Sie die DeleteEventSource-Methode auf, um die Quelle zu entfernen.
So entfernen Sie die erstellte Ereignisquelle
Suchen Sie im Code-Editor die Prozedur RemoveSource_Click.
Fügen Sie den folgenden Code hinzu:
If EventLog.SourceExists("Source1") Then EventLog.DeleteEventSource("Source1") End If
if (System.Diagnostics.EventLog.SourceExists("Source1")) { System.Diagnostics.EventLog.DeleteEventSource("Source1"); }
Lesen von Einträgen
In dieser Prozedur schreiben Sie Code, mit dem Sie die Auflistung der Einträge im Ereignisprotokoll durchlaufen und die vorhandenen Meldungen im Protokoll anzeigen.
So lesen Sie Einträge aus dem von Ihnen erstellten benutzerdefinierten Protokoll
Suchen Sie im Code-Editor die Prozedur ReadEntry_Click.
Fügen Sie den folgenden Code hinzu:
Dim entry As EventLogEntry If EventLog1.Entries.Count > 0 Then For Each entry In EventLog1.Entries System.Windows.Forms.MessageBox.Show(entry.Message) Next Else MessageBox.Show("There are no entries in the log.") End If
if (eventLog1.Entries.Count > 0) { foreach (System.Diagnostics.EventLogEntry entry in eventLog1.Entries) { MessageBox.Show(entry.Message); } } else { MessageBox.Show("There are no entries in the log."); }
Testen des Codes
Im vorliegenden Abschnitt überprüfen Sie die Ergebnisse des Codes mit dem Server-Explorer.
So starten Sie den Server-Explorer
Den Server-Explorer rufen Sie über das Menü Ansicht auf.
Erweitern Sie zunächst den Knoten des aktuellen Servers und dann den darunter befindlichen Knoten Ereignisprotokolle.
So erstellen Sie die Anwendung und führen diese aus
Speichern Sie die Dateien, und drücken Sie F5, um das Projekt zu erstellen und zu starten. Daraufhin wird das Formular mit den acht erstellten Schaltflächen angezeigt.
Klicken Sie auf die Schaltfläche Benutzerdefiniertes Protokoll erstellen.
Hinweis: Um Windows-Ereignisprotokolle erstellen zu können, müssen Sie über entsprechende Berechtigungen auf dem Server verfügen, auf dem die Anwendung ausgeführt wird. Wenn an dieser Stelle ein Sicherheitsfehler angezeigt wird, wenden Sie sich an den Systemadministrator.
Kehren Sie zum Produkt zurück, während Sie sich im Ausführmodus befinden, und klicken Sie im Server-Explorer mit der rechten Maustaste auf den Knoten Ereignisprotokolle.
Klicken Sie auf Aktualisieren.
Überprüfen Sie, ob das Protokoll NewLog1 nun im Knoten Ereignisprotokolle angezeigt wird.
So testen, erstellen, löschen und überprüfen Sie benutzerdefinierte Protokolle
Kehren Sie zum Formular zurück, das gerade ausgeführt wird, und klicken Sie auf die Schaltfläche Überprüfen, ob Protokoll vorhanden ist.
Daraufhin sollte eine Eingabeaufforderung angezeigt werden, deren Text auf "True" gesetzt ist.
Klicken Sie auf die Schaltfläche Protokoll löschen und anschließend erneut auf Überprüfen, ob Protokoll vorhanden ist.
Die Eingabeaufforderung sollte nun "False" ausgeben.
Klicken Sie erneut auf die Schaltfläche Benutzerdefiniertes Protokoll erstellen, um das Protokoll neu zu erstellen.
So testen Sie das Schreiben von Einträgen in und das Lesen von Einträgen aus dem benutzerdefinierten Protokoll
Klicken Sie im Formular auf die Schaltfläche Eintrag schreiben.
Rufen Sie den Server-Explorer auf, und erweitern Sie das Protokoll NewLog1.
Erweitern Sie den darunter befindlichen Source1-Knoten.
Das Protokoll sollte nun um zwei Einträge erweitert sein. Einer der beiden Einträge wird durch ein Symbol als Informationseintrag gekennzeichnet, der andere als Fehler.
Kehren Sie zum Formular zurück, und klicken Sie auf die Schaltfläche Eintrag lesen.
Daraufhin werden zwei Eingabeaufforderungen angezeigt, von denen eine den Informationseintrag und die andere den Fehlereintrag enthält.
Hinweis: Wenn Sie mehrmals auf die Schaltfläche Eintrag schreiben geklickt haben, werden mehrere Eingabeaufforderungen angezeigt.
So testen Sie das Löschen des Protokolls
Klicken Sie im Formular auf die Schaltfläche Protokoll löschen.
Klicken Sie im Server-Explorer mit der rechten Maustaste auf den Knoten NewLog1, und klicken Sie anschließend auf Aktualisieren.
Das angezeigte Protokoll enthält nun keine Einträge mehr.
So testen Sie das Entfernen der Quellzeichenfolge
Klicken Sie im Formular auf die Schaltfläche Ereignisquelle entfernen.
Klicken Sie auf die Schaltfläche Überprüfen, ob Quelle vorhanden ist. Daraufhin sollten Sie die Meldung "False" erhalten, die anzeigt, dass die Quelle Source1 nicht mehr vorhanden ist.
Klicken Sie auf die Schaltfläche Eintrag schreiben.
Hinweis: Wenn noch keine Quelle vorhanden ist, wird sie von der WriteEntry-Methode festgelegt. Dadurch erhalten Sie die Möglichkeit, Einträge in das Protokoll zu schreiben.
Klicken Sie im Server-Explorer mit der rechten Maustaste auf den Knoten NewLog1, und klicken Sie anschließend auf Aktualisieren. Im Protokoll sollten zwei Einträge angezeigt werden.
Klicken Sie erneut auf die Schaltfläche Überprüfen, ob Quelle vorhanden ist. Daraufhin sollten Sie die Meldung "True" erhalten, die anzeigt, dass die Quelle Source1 vorhanden ist.
Optional können Sie auch auf die Schaltfläche DeleteLog klicken, wenn Sie den Test beendet haben. Damit entfernen Sie das Protokoll NewLog1 und die Quelle Source1, sodass keine dauerhaften Änderungen an der Systemkonfiguration vorgenommen werden.
Siehe auch
Weitere Ressourcen
Exemplarische Vorgehensweisen zur Systemüberwachung
Protokollieren von Anwendungs-, Server- und Sicherheitsereignissen