Megosztás a következőn keresztül:


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.

naplófájl í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.