Freigeben über


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

  1. Erstellen Sie im Dialogfeld Neues Projekt eine Windows-Anwendung für Visual Basic oder Visual C#, und nennen Sie diese EventLogApp1.

  2. 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

  3. Führen Sie für die einzelnen Schaltflächen folgende Schritte aus:

    1. 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.

    2. Kehren Sie zur Entwurfsansicht zurück, und doppelklicken Sie auf die nächste Schaltfläche.

    3. Fahren Sie so lange fort, bis Sie für jede Schaltfläche einen standardmäßigen Ereignishandlerstub erstellt haben.

  4. 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

  1. Suchen Sie im Code-Editor die Prozedur CreateLog_Click.

  2. 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

  1. Suchen Sie im Code-Editor die Prozedur DeleteLog_Click.

  2. 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

  1. Suchen Sie im Code-Editor die Prozedur WriteEntry_Click.

  2. 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

  1. Suchen Sie im Code-Editor die Prozedur ClearLog_Click.

  2. 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

  1. Suchen Sie im Code-Editor die Prozedur VerifyLog_Click.

  2. 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

  1. Suchen Sie im Code-Editor die Prozedur VerifySource_Click.

  2. 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

  1. Suchen Sie im Code-Editor die Prozedur RemoveSource_Click.

  2. 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

  1. Suchen Sie im Code-Editor die Prozedur ReadEntry_Click.

  2. 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

  1. Den Server-Explorer rufen Sie über das Menü Ansicht auf.

  2. 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

  1. 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.

  2. 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.

  3. 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.

  4. Klicken Sie auf Aktualisieren.

  5. Überprüfen Sie, ob das Protokoll NewLog1 nun im Knoten Ereignisprotokolle angezeigt wird.

So testen, erstellen, löschen und überprüfen Sie benutzerdefinierte Protokolle

  1. 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.

  2. 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.

  3. 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

  1. Klicken Sie im Formular auf die Schaltfläche Eintrag schreiben.

  2. Rufen Sie den Server-Explorer auf, und erweitern Sie das Protokoll NewLog1.

  3. 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.

  4. 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

  1. Klicken Sie im Formular auf die Schaltfläche Protokoll löschen.

  2. 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

  1. Klicken Sie im Formular auf die Schaltfläche Ereignisquelle entfernen.

  2. 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.

  3. 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.

  4. 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.

  5. 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.

  6. 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