Freigeben über


Ereignisprotokolldateiformat

Jedes Ereignisprotokoll enthält einen Header (dargestellt durch die ELF_LOGFILE_HEADER-Struktur ), der über eine feste Größe verfügt, 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 in das 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. Dieser Prozess wird anhand des folgenden Diagramms veranschaulicht.

Schreiben einer Protokolldatei

Die Ereignisdatensätze werden auf eine der folgenden Arten organisiert:

  • Nicht umschließend. Der älteste Datensatz befindet sich unmittelbar nach dem Ereignisprotokollheader, und neue Datensätze werden nach dem letzten Datensatz hinzugefügt, der (vor dem ELF_EOF_RECORD) hinzugefügt wurde. Das folgende Beispiel zeigt die Nicht-Wrapping-Methode:

    HEADER                   (ELF_LOGFILE_HEADER)
    EVENT RECORD 1           (EVENTLOGRECORD)
    EVENT RECORD 2           (EVENTLOGRECORD)
    EOF RECORD               (ELF_EOF_RECORD)
    

    Nicht-Wrapping kann auftreten, wenn das Ereignisprotokoll erstellt oder das Ereignisprotokoll gelöscht wird. Das Ereignisprotokoll wird weiterhin nicht umschlossen, bis der Grenzwert für die Ereignisprotokollgröße erreicht ist. Die Größe des Ereignisprotokolls wird entweder durch den MaxSize-Konfigurationswert oder die Menge der Systemressourcen beschränkt.

    Wenn der Grenzwert für die Ereignisprotokollgröße erreicht ist, beginnt er möglicherweise mit dem Umbruch. Das Umschließen wird durch den Wert der Aufbewahrungskonfiguration gesteuert. Weitere Informationen zu den Ereignisprotokollkonfigurationswerten finden Sie unter Eventlog Key.

  • Verpackung. Die Datensätze sind als kreisförmiger Puffer organisiert. Wenn neue Datensätze hinzugefügt werden, werden die ältesten Datensätze ersetzt. Der Speicherort 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 Leerraum für die Datensätze 1 bis 101 überschrieben wurde.

    Zwischen dem ELF_EOF_RECORD und dem ältesten Datensatz ist Platz, da das System eine integrale Anzahl von Datensätzen löscht, um Speicherplatz für den neuesten Datensatz freizugeben. Wenn der neueste Datensatz beispielsweise 100 Bytes lang ist und die beiden ältesten Datensätze 75 Bytes 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 in der Datei umgebrochen 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 Bytes beträgt, werden die ersten 100 Bytes am Ende der Datei geschrieben, und die nächsten 200 Bytes werden unmittelbar nach dem ELF_LOGFILE_HEADER am Anfang der Datei geschrieben. Wenn der verfügbare Speicherplatz am Ende der Datei kleiner ist als der feste Teil des EVENTLOGRECORD (0x38 Bytes), wird der gesamte neue Datensatz unmittelbar nach dem ELF_LOGFILE_HEADER am Anfang der Datei geschrieben. 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 Ereignisses.