Format File Log Kejadian
Setiap log peristiwa berisi header (diwakili oleh struktur ELF_LOGFILE_HEADER) yang memiliki ukuran tetap, diikuti dengan jumlah variabel rekaman peristiwa (diwakili oleh struktur EVENTLOGRECORD), dan rekaman akhir file (diwakili oleh struktur ELF_EOF_RECORD).
Struktur ELF_LOGFILE_HEADER dan struktur ELF_EOF_RECORD ditulis dalam log peristiwa saat log peristiwa dibuat dan diperbarui setiap kali peristiwa ditulis ke log.
Ketika aplikasi memanggil fungsi ReportEvent untuk menulis entri ke log peristiwa, sistem meneruskan parameter ke layanan pengelogan peristiwa. Layanan pengelogan peristiwa menggunakan informasi untuk menulis struktur EVENTLOGRECORD ke log peristiwa. Diagram berikut mengilustrasikan proses ini.
Rekaman peristiwa diatur dengan salah satu cara berikut:
Tidak dibungkus. Rekaman terlama segera setelah header log peristiwa dan rekaman baru ditambahkan setelah rekaman terakhir yang ditambahkan (sebelum ELF_EOF_RECORD). Contoh berikut menunjukkan metode non-pembungkusan:
HEADER (ELF_LOGFILE_HEADER) EVENT RECORD 1 (EVENTLOGRECORD) EVENT RECORD 2 (EVENTLOGRECORD) EOF RECORD (ELF_EOF_RECORD)
Non-pembungkusan dapat terjadi ketika log peristiwa dibuat atau ketika log peristiwa dibersihkan. Log peristiwa terus menjadi non-pembungkusan hingga batas ukuran log peristiwa tercapai. Ukuran log peristiwa dibatasi oleh nilai konfigurasi MaxSize atau jumlah sumber daya sistem.
Ketika batas ukuran log peristiwa tercapai, batas mungkin mulai membungkus. Pembungkusan dikontrol oleh nilai konfigurasi Retensi. Untuk informasi selengkapnya tentang nilai konfigurasi log peristiwa, lihat Eventlog Key.
Balut. Rekaman diatur sebagai buffer melingkar. Saat rekaman baru ditambahkan, rekaman terlama diganti. Lokasi rekaman terlama dan terbaru akan bervariasi. Contoh berikut menunjukkan metode pembungkusan.
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)
Dalam contoh catatan terlama tidak lagi 1, tetapi adalah 102 karena ruang untuk rekaman 1 hingga 101 ditimpa.
Ada beberapa ruang antara ELF_EOF_RECORD dan rekaman terlama karena sistem akan menghapus jumlah rekaman integral untuk mengosongkan ruang untuk rekaman terbaru. Misalnya, jika catatan terbaru panjangnya 100 byte dan dua rekaman terlama berdurasi 75 byte, maka sistem akan menghapus dua rekaman terlama. Tambahan 50 byte akan digunakan nanti ketika rekaman baru ditulis.
File log peristiwa memiliki ukuran tetap dan ketika rekaman dalam pembungkus file, rekaman di akhir file biasanya akan dibagi menjadi dua rekaman. Misalnya, jika posisi untuk penulisan berikutnya adalah 100 byte dari akhir file dan ukuran rekaman adalah 300 byte, 100 byte pertama akan ditulis di akhir file dan 200 byte berikutnya akan ditulis di awal file segera setelah ELF_LOGFILE_HEADER. Jika ruang yang tersedia di akhir file kurang dari bagian tetap dari EVENTLOGRECORD (0x38 byte), semua rekaman baru akan ditulis di awal file segera setelah ELF_LOGFILE_HEADER. Byte yang tidak digunakan di akhir file akan diisi dengan pola 0x00000027.
Untuk informasi selengkapnya dan contoh kode, lihat Melaporkan Peristiwa.