Sie sind hier: Startseite
 Liste aller Codebeispiele

Auslesen von Einträgen aus einem Ereignisprotokoll

Ein Beispiel zum Einsatz der Klasse System.Diagnostics.EventLog aus der .NET-Klassenbibliothek.

Autor: Dr. Holger Schwichtenberg 

Beschreibung

Die Klasse EventLog besitzt ein Attribut Entries, das auf eine Collection vom Typ EventLogEntryCollection verweist. Diese Collection enthält einzelne Objekte des Typs EventLogEntry mit jeweils einem Protokolleintrag. Die Einträge sind nach dem Eintragsdatum geordnet, wobei die ältesten Einträge vorne in der Collection stehen.

Beispiel
Das folgende Beispiel listet Einträge aus dem Anwendungsprotokoll (Name: "Application") auf. Dabei wird die Anzahl der auszugebenden Einträge über einen Zähler auf die letzten x Einträge begrenzt.

Zugriff auf Ereignisprotokolle auf anderen Computern
Die Klasse EventLog unterstützt auch den Fernzugriff. Geben Sie dazu bei der Instanziierung neben dem Protokollnamen als zweiten Parameter einen Computernamen an.
EventLog("logname","computername")

Programmcodebeispiele Visual Basic .NET (VB.NET)

' ============================
' .NET-Code-Beispiel in Visual Basic .NET
' Auslesen von Einträgen aus einem
' Ereignisprotokoll
' (C) Holger@Schwichtenberg.de
' ============================
Public Sub EventLog_Read()
' Name des Ereignisprotokolls
Const logname As String = "Application"
' Anzahl der auszugebenden Einträge
Const Anzahl As Long = 10

Dim log As EventLog
Dim eintrag As EventLogEntry
Dim Count As Long = 0

' -- Zugriff auf das Ereignisprotokoll
log = New EventLog(logname)

say("--- Letzte " & Anzahl & _
" Einträge von " & log.entries.Count & _
" Einträgen aus dem Protokoll " & _
log.Log & " auf dem Computer " & _
log.machinename)

' --- Schleife über alle Einträge
For Each eintrag In log.Entries
count += 1
If Count > log.Entries.Count - Anzahl Then
say(eintrag.EntryType & ":" & _
eintrag.EventID & ":" & _
eintrag.Category & ":" & _
eintrag.Message & ":" & _
eintrag.Source & ":" & _
eintrag.TimeGenerated & ":" & _
eintrag.TimeWritten & ":" & _
eintrag.UserName & ":")
End If
Next

End Sub

Programmcodebeispiele CSharp (C#)

using System;
using System.IO;
using System.Threading;
using System.Diagnostics;
using System.Windows.Forms;

using FCL_Buch;

namespace FCLBuch._SystemDiagnostics {

public class Samples_EventLog {
public void EventLog_Read() {

// Auslesen von Einträgen aus einem Ereignisprotokoll

// Name des Ereignisprotokolls
string logname = "Application";

// Anzahl der auszugebenden Einträge
long anzahl = 10;

long count = 0;

// -- Zugriff auf das Ereignisprotokoll
EventLog log = new EventLog( logname );

FclOutput.PrintOut("Letzte " + anzahl.ToString() + " Einträge von " + log.Entries.Count +
" Einträgen aus dem Protokoll " + log.Log + " auf dem Computer " + log.MachineName);

// Schleife über alle Einträge
foreach ( EventLogEntry eintrag in log.Entries ) {
count += 1;
if ( count > log.Entries.Count - anzahl ) {
FclOutput.PrintOut(eintrag.EntryType + ":" +
eintrag.EventID + ":" +
eintrag.Category + ":" +
eintrag.Message + ":" +
eintrag.Source + ":" +
eintrag.TimeGenerated + ":" +
eintrag.TimeWritten + ":" +
eintrag.UserName + ":" );
}
}
}
}
}

Querverweise

 Definition '.NET Framework Class Library'  Verfügbarkeit der Klasse 'System.Diagnostics.EventLog'  Übersicht über den FCL-Namensraum 'System.Diagnostics'  .NET & Visual Studio Community Portal