Dela via


Filformat för händelselogg

Varje händelselogg innehåller ett huvud (representerat av ELF_LOGFILE_HEADER struktur) som har en fast storlek, följt av ett variabelt antal händelseposter (representeras av EVENTLOGRECORD strukturer) och en post i slutet av filen (representeras av ELF_EOF_RECORD struktur).

Den ELF_LOGFILE_HEADER strukturen och ELF_EOF_RECORD strukturen skrivs i händelseloggen när händelseloggen skapas och uppdateras varje gång en händelse skrivs till loggen.

När ett program anropar funktionen ReportEvent för att skriva en post till händelseloggen skickar systemet parametrarna till händelseloggningstjänsten. Händelseloggningstjänsten använder informationen för att skriva en EVENTLOGRECORD struktur till händelseloggen. Följande diagram illustrerar den här processen.

skriva en loggfil

Händelseposterna ordnas på något av följande sätt:

  • Ej omslutande. Den äldsta posten är omedelbart efter händelselogghuvudet och nya poster läggs till efter den sista posten som lades till (före ELF_EOF_RECORD). I följande exempel visas metoden för icke-omslutning:

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

    Icke-omslutning kan inträffa när händelseloggen skapas eller när händelseloggen rensas. Händelseloggen fortsätter att vara icke-omslutande tills storleksgränsen för händelseloggen har nåtts. Händelseloggens storlek begränsas av antingen MaxSize konfigurationsvärde eller mängden systemresurser.

    När storleksgränsen för händelseloggen har nåtts kan det börja omslutas. Omslutningen styrs av konfigurationsvärdet kvarhållning. Mer information om händelseloggens konfigurationsvärden finns i Eventlog Key.

  • Omslag. Posterna är ordnade som en cirkelbuffert. När nya poster läggs till ersätts de äldsta posterna. Platsen för de äldsta och nyaste posterna varierar. I följande exempel visas omslutningsmetoden.

    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)
    

    I exemplet är den äldsta posten inte längre 1, men är 102 eftersom utrymmet för posterna 1 till 101 skrevs över.

    Det finns ett visst utrymme mellan ELF_EOF_RECORD och den äldsta posten eftersom systemet raderar ett helt antal poster för att frigöra utrymme för den senaste posten. Om den senaste posten till exempel är 100 byte lång och de två äldsta posterna är 75 byte långa tar systemet bort de två äldsta posterna. De extra 50 byteen används senare när nya poster skrivs.

    En händelseloggfil har en fast storlek och när posterna i filomslutningen delas posten i slutet av filen vanligtvis upp i två poster. Om positionen för nästa skrivning till exempel är 100 byte från slutet av filen och postens storlek är 300 byte skrivs de första 100 byteen i slutet av filen och de kommande 200 byteen skrivs i början av filen omedelbart efter ELF_LOGFILE_HEADER. Om det tillgängliga utrymmet i slutet av filen är mindre än den fasta delen av EVENTLOGRECORD- (0x38 byte) skrivs alla nya posterna i början av filen omedelbart efter ELF_LOGFILE_HEADER. De oanvända byteen i slutet av filen fylls med mönstret 0x00000027.

Mer information och ett kodexempel finns i Reporting an Event.