Format du fichier journal des événements
Chaque journal des événements contient un en-tête (représenté par la structure ELF_LOGFILE_HEADER ) qui a une taille fixe, suivi d’un nombre variable d’enregistrements d’événements (représenté par les structures EVENTLOGRECORD ) et d’un enregistrement de fin de fichier (représenté par la structure ELF_EOF_RECORD ).
La structure ELF_LOGFILE_HEADER et la structure ELF_EOF_RECORD sont écrites dans le journal des événements lors de la création du journal des événements et sont mises à jour chaque fois qu’un événement est écrit dans le journal.
Lorsqu’une application appelle la fonction ReportEvent pour écrire une entrée dans le journal des événements, le système transmet les paramètres au service de journalisation des événements. Le service de journalisation des événements utilise les informations pour écrire une structure EVENTLOGRECORD dans le journal des événements. Le diagramme suivant illustre ce processus.
Les enregistrements d’événements sont organisés de l’une des manières suivantes :
Sans habillage. L’enregistrement le plus ancien se trouve immédiatement après l’en-tête du journal des événements et les nouveaux enregistrements sont ajoutés après le dernier enregistrement qui a été ajouté (avant le ELF_EOF_RECORD). L’exemple suivant montre la méthode sans wrapping :
HEADER (ELF_LOGFILE_HEADER) EVENT RECORD 1 (EVENTLOGRECORD) EVENT RECORD 2 (EVENTLOGRECORD) EOF RECORD (ELF_EOF_RECORD)
Un non-wrapping peut se produire lorsque le journal des événements est créé ou lorsque le journal des événements est effacé. Le journal des événements continue de ne pas être encapsulé jusqu’à ce que la limite de taille du journal des événements soit atteinte. La taille du journal des événements est limitée par la valeur de configuration MaxSize ou par la quantité de ressources système.
Lorsque la limite de taille du journal des événements est atteinte, elle peut commencer à habillage. L’habillage est contrôlé par la valeur de configuration rétention . Pour plus d’informations sur les valeurs de configuration du journal des événements, consultez Clé eventlog.
Emballage. Les enregistrements sont organisés en tant que mémoire tampon circulaire. À mesure que de nouveaux enregistrements sont ajoutés, les enregistrements les plus anciens sont remplacés. L’emplacement des enregistrements les plus anciens et les plus récents varie. L’exemple suivant montre la méthode d’habillage.
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)
Dans l’exemple, l’enregistrement le plus ancien n’est plus 1, mais est 102, car l’espace des enregistrements 1 à 101 a été remplacé.
Il y a un peu d’espace entre l’enregistrement ELF_EOF_RECORD et l’enregistrement le plus ancien, car le système efface un nombre intégral d’enregistrements pour libérer de l’espace pour l’enregistrement le plus récent. Par exemple, si l’enregistrement le plus récent est de 100 octets et que les deux enregistrements les plus anciens ont une longueur de 75 octets, le système supprime les deux enregistrements les plus anciens. Les 50 octets supplémentaires seront utilisés ultérieurement lors de l’écriture de nouveaux enregistrements.
Un fichier journal des événements a une taille fixe et lorsque les enregistrements dans le fichier wrap, l’enregistrement à la fin du fichier est généralement divisé en deux enregistrements. Par exemple, si la position de l’écriture suivante est de 100 octets à partir de la fin du fichier et que la taille de l’enregistrement est de 300 octets, les 100 premiers octets sont écrits à la fin du fichier et les 200 octets suivants sont écrits au début du fichier immédiatement après l’ELF_LOGFILE_HEADER. Si l’espace disponible à la fin du fichier est inférieur à la partie fixe d’EVENTLOGRECORD (0x38 octets), tout le nouvel enregistrement est écrit au début du fichier immédiatement après l’ELF_LOGFILE_HEADER. Les octets inutilisés à la fin du fichier sont remplis avec le modèle 0x00000027.
Pour plus d’informations et un exemple de code, consultez Création d’un événement.