Bestandsindeling van gebeurtenislogboek
Elk gebeurtenislogboek bevat een koptekst (vertegenwoordigd door de ELF_LOGFILE_HEADER structuur) met een vaste grootte, gevolgd door een variabel aantal gebeurtenisrecords (vertegenwoordigd door EVENTLOGRECORD structuren) en een end-of-file record (vertegenwoordigd door de ELF_EOF_RECORD structuur).
De ELF_LOGFILE_HEADER structuur en de ELF_EOF_RECORD structuur worden geschreven in het gebeurtenislogboek wanneer het gebeurtenislogboek wordt gemaakt en worden bijgewerkt telkens wanneer een gebeurtenis naar het logboek wordt geschreven.
Wanneer een toepassing de ReportEvent functie aanroept om een vermelding naar het gebeurtenislogboek te schrijven, geeft het systeem de parameters door aan de service voor logboekregistratie van gebeurtenissen. De gebeurtenisregistratieservice gebruikt de informatie voor het schrijven van een EVENTLOGRECORD structuur naar het gebeurtenislogboek. In het volgende diagram ziet u dit proces.
De gebeurtenisrecords zijn op een van de volgende manieren ingedeeld:
Niet verpakken. De oudste record is direct na de gebeurtenislogboekheader en nieuwe records worden toegevoegd na de laatste record die is toegevoegd (vóór de ELF_EOF_RECORD). In het volgende voorbeeld ziet u de methode voor niet-terugloop:
HEADER (ELF_LOGFILE_HEADER) EVENT RECORD 1 (EVENTLOGRECORD) EVENT RECORD 2 (EVENTLOGRECORD) EOF RECORD (ELF_EOF_RECORD)
Non-wrapping kan optreden wanneer het gebeurtenislogboek wordt gemaakt of wanneer het gebeurtenislogboek wordt gewist. Het gebeurtenislogboek blijft niet verpakken totdat de limiet voor de grootte van het gebeurtenislogboek is bereikt. De grootte van het gebeurtenislogboek wordt beperkt door de MaxSize configuratiewaarde of de hoeveelheid systeembronnen.
Wanneer de limiet voor de grootte van het gebeurtenislogboek is bereikt, kan deze worden verpakt. Wrapping wordt beheerd door de retentie configuratiewaarde. Zie Eventlog Keyvoor meer informatie over de configuratiewaarden van het gebeurtenislogboek.
Verpakking. De records zijn ingedeeld als een kringbuffer. Als er nieuwe records worden toegevoegd, worden de oudste records vervangen. De locatie van de oudste en nieuwste records varieert. In het volgende voorbeeld ziet u de 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)
In het voorbeeld is de oudste record niet meer 1, maar is 102 omdat de ruimte voor records 1 tot en met 101 is overschreven.
Er is ruimte tussen de ELF_EOF_RECORD en de oudste record, omdat het systeem een integraal aantal records zal wissen om ruimte vrij te maken voor de nieuwste record. Als de nieuwste record bijvoorbeeld 100 bytes lang is en de twee oudste records 75 bytes lang zijn, worden de twee oudste records door het systeem verwijderd. De extra 50 bytes worden later gebruikt wanneer nieuwe records worden geschreven.
Een gebeurtenislogboekbestand heeft een vaste grootte en wanneer de records in de bestandsterugloop worden verpakt, wordt de record aan het einde van het bestand meestal gesplitst in twee records. Als de positie voor de volgende schrijfbewerking bijvoorbeeld 100 bytes is vanaf het einde van het bestand en de grootte van de record 300 bytes is, worden de eerste 100 bytes aan het einde van het bestand geschreven en worden de volgende 200 bytes aan het begin van het bestand geschreven direct na de ELF_LOGFILE_HEADER. Als de beschikbare ruimte aan het einde van het bestand kleiner is dan het vaste gedeelte van de EVENTLOGRECORD (0x38 bytes), wordt alle nieuwe record direct na de ELF_LOGFILE_HEADERgeschreven. De ongebruikte bytes aan het einde van het bestand worden gevuld met het patroon 0x00000027.
Zie Een gebeurtenisrapporteren voor meer informatie en een codevoorbeeld.