Eseménynapló fájlformátuma
Minden eseménynapló tartalmaz egy rögzített méretű fejlécet (amelyet a ELF_LOGFILE_HEADER-struktúra jelöl), majd egy változó számú eseményrekordot (amelyet EVENTLOGRECORD struktúrák jelölnek) és egy fájlvégi rekordot (amelyet a ELF_EOF_RECORD-struktúra jelöl).
A ELF_LOGFILE_HEADER struktúrát és a ELF_EOF_RECORD struktúrát az eseménynaplóban írják az eseménynapló létrehozásakor, és minden alkalommal frissülnek, amikor egy eseményt a naplóba írnak.
Amikor egy alkalmazás meghívja a ReportEvent függvényt, hogy bejegyzést írjon az eseménynaplóba, a rendszer átadja a paramétereket az eseménynaplózási szolgáltatásnak. Az eseménynaplózási szolgáltatás az információk alapján egy EVENTLOGRECORD struktúrát ír az eseménynaplóba. Az alábbi ábra ezt a folyamatot szemlélteti.
írása
Az eseményrekordok az alábbi módokon vannak rendszerezve:
Nem burkoló. A legrégebbi rekord közvetlenül az eseménynapló fejléce után, az új rekordok pedig az utolsó hozzáadott rekord után (a ELF_EOF_RECORDelőtt) lesznek hozzáadva. Az alábbi példa a nem burkoló módszert mutatja be:
HEADER (ELF_LOGFILE_HEADER) EVENT RECORD 1 (EVENTLOGRECORD) EVENT RECORD 2 (EVENTLOGRECORD) EOF RECORD (ELF_EOF_RECORD)
Nem tördelés akkor fordulhat elő, ha az eseménynapló létrejön, vagy ha az eseménynapló törlődik. Az eseménynapló továbbra is nem tördelt, amíg el nem éri az eseménynapló méretkorlátját. Az eseménynapló méretét a MaxSize konfigurációs értéke vagy a rendszererőforrások mennyisége korlátozza.
Az eseménynapló méretkorlátjának elérésekor előfordulhat, hogy elkezdi a körbefuttatást. A körbefuttatást a megőrzési konfigurációs érték szabályozza. Az eseménynapló konfigurációs értékeiről további információt az Eventlog Keycímű témakörben talál.
Csomagolás. A rekordok körkörös pufferként vannak rendszerezve. Az új rekordok hozzáadásakor a rendszer lecseréli a legrégebbi rekordokat. A legrégebbi és a legújabb rekordok helye eltérő lesz. Az alábbi példa a körbefuttatási módszert mutatja be.
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)
A példában a legrégebbi rekord már nem 1, hanem 102, mert az 1–101 rekord helyének felülírása megtörtént.
A ELF_EOF_RECORD és a legrégebbi rekord között van némi hely, mert a rendszer egy teljes számú rekordot töröl, hogy helyet szabadítsunk fel a legújabb rekord számára. Ha például a legújabb rekord 100 bájt hosszú, és a két legrégebbi rekord 75 bájt hosszú, akkor a rendszer eltávolítja a két legrégebbi rekordot. A további 50 bájt az új rekordok írásakor később lesz felhasználva.
Az eseménynapló-fájlok mérete rögzített, és amikor a fájlburkolás rekordjai, a fájl végén lévő rekord általában két rekordra lesz felosztva. Ha például a következő írás helye 100 bájt a fájl végétől, és a rekord mérete 300 bájt, az első 100 bájt a fájl végén lesz megírva, a következő 200 bájt pedig közvetlenül a fájl elején lesz megírva közvetlenül a ELF_LOGFILE_HEADERután. Ha a fájl végén található szabad terület kisebb, mint a EVENTLOGRECORD rögzített része (0x38 bájt), az összes új rekord közvetlenül a ELF_LOGFILE_HEADERután lesz megírva a fájl elején. A fájl végén lévő fel nem használt bájtok meg lesznek töltve a 0x00000027 mintával.
További információ és példakód: Eseményjelentés.