Ereignisprotokolldateiformat
Jedes Ereignisprotokoll enthält eine Kopfzeile (dargestellt durch die ELF_LOGFILE_HEADER-Struktur), die eine feste Größe aufweist, gefolgt von einer variablen Anzahl von Ereignisdatensätzen (dargestellt durch EVENTLOGRECORD Strukturen) und einem End-of-File-Datensatz (dargestellt durch die ELF_EOF_RECORD-Struktur).
Die ELF_LOGFILE_HEADER Struktur und die ELF_EOF_RECORD Struktur werden beim Erstellen des Ereignisprotokolls im Ereignisprotokoll geschrieben und jedes Mal aktualisiert, wenn ein Ereignis in das Protokoll geschrieben wird.
Wenn eine Anwendung die ReportEvent--Funktion aufruft, um einen Eintrag in das Ereignisprotokoll zu schreiben, übergibt das System die Parameter an den Ereignisprotokollierungsdienst. Der Ereignisprotokollierungsdienst verwendet die Informationen, um eine EVENTLOGRECORD- Struktur in das Ereignisprotokoll zu schreiben. Das folgende Diagramm veranschaulicht diesen Prozess.
Die Ereignisdatensätze sind auf eine der folgenden Arten organisiert:
Kein Umbruch. Der älteste Datensatz wird unmittelbar nach dem Ereignisprotokollheader und neuen Datensätzen nach dem letzten hinzugefügten Datensatz (vor dem ELF_EOF_RECORD) hinzugefügt. Das folgende Beispiel zeigt die Nichtumbruchmethode:
HEADER (ELF_LOGFILE_HEADER) EVENT RECORD 1 (EVENTLOGRECORD) EVENT RECORD 2 (EVENTLOGRECORD) EOF RECORD (ELF_EOF_RECORD)
Wenn das Ereignisprotokoll erstellt wird oder das Ereignisprotokoll gelöscht wird, kann kein Wrapping auftreten. Das Ereignisprotokoll wird weiterhin nicht umbrochen, bis der Grenzwert für die Ereignisprotokollgröße erreicht ist. Die Größe des Ereignisprotokolls ist entweder durch den MaxSize Konfigurationswert oder die Menge der Systemressourcen begrenzt.
Wenn der Grenzwert für die Größe des Ereignisprotokolls erreicht ist, kann es mit dem Umbruch beginnen. Der Umbruch wird durch den Konfigurationswert Aufbewahrung gesteuert. Weitere Informationen zu den Ereignisprotokollkonfigurationswerten finden Sie unter Eventlog Key.
Verpackung. Die Datensätze werden als Kreispuffer organisiert. Wenn neue Datensätze hinzugefügt werden, werden die ältesten Datensätze ersetzt. Die Position der ältesten und neuesten Datensätze variiert. Das folgende Beispiel zeigt die Wrapping-Methode.
HEADER (ELF_LOGFILE_HEADER) Part of EVENT RECORD 300 (EVENTLOGRECORD) EVENT RECORD 301 (EVENTLOGRECORD) . . . EVENT RECORD 400 (EVENTLOGRECORD) EOF RECORD (ELF_EOF_RECORD) Wasted space EVENT RECORD 102 (EVENTLOGRECORD) EVENT RECORD 103 (EVENTLOGRECORD) . . . EVENT RECORD 299 (EVENTLOGRECORD) Part of EVENT RECORD 300 (EVENTLOGRECORD)
Im Beispiel ist der älteste Datensatz nicht mehr 1, sondern 102, da der Speicherplatz für Datensätze 1 bis 101 überschrieben wurde.
Zwischen dem ELF_EOF_RECORD und dem ältesten Datensatz gibt es Platz, da das System eine integrale Anzahl von Datensätzen löscht, um Speicherplatz für den neuesten Datensatz frei zu machen. Wenn der neueste Datensatz beispielsweise 100 Bytes lang ist und die beiden ältesten Datensätze 75 Byte lang sind, entfernt das System die beiden ältesten Datensätze. Die zusätzlichen 50 Bytes werden später verwendet, wenn neue Datensätze geschrieben werden.
Eine Ereignisprotokolldatei hat eine feste Größe, und wenn die Datensätze im Dateiumbruch eingefügt werden, wird der Datensatz am Ende der Datei in der Regel in zwei Datensätze aufgeteilt. Wenn die Position für den nächsten Schreibvorgang beispielsweise 100 Bytes vom Ende der Datei und die Größe des Datensatzes 300 Byte beträgt, werden die ersten 100 Bytes am Ende der Datei geschrieben, und die nächsten 200 Bytes werden am Anfang der Datei unmittelbar nach dem ELF_LOGFILE_HEADERgeschrieben. Wenn der verfügbare Speicherplatz am Ende der Datei kleiner als der feste Teil des EVENTLOGRECORD (0x38 Bytes) ist, wird der gesamte neue Datensatz am Anfang der Datei unmittelbar nach dem ELF_LOGFILE_HEADERgeschrieben. Die nicht verwendeten Bytes am Ende der Datei werden mit dem Muster 0x00000027 gefüllt.
Weitere Informationen und ein Codebeispiel finden Sie unter Melden eines Ereignis-.