이벤트 로그 파일 형식
각 이벤트 로그에는 고정 크기가 있는 헤더(ELF_LOGFILE_HEADER 구조체로 표시됨)와 가변적인 수의 이벤트 레코드( EVENTLOGRECORD 구조로 표시됨) 및 파일 끝 레코드( ELF_EOF_RECORD 구조체로 표시됨)가 포함됩니다.
ELF_LOGFILE_HEADER 구조체와 ELF_EOF_RECORD 구조는 이벤트 로그를 만들 때 이벤트 로그에 기록되고 이벤트가 로그에 기록 될 때마다 업데이트됩니다.
애플리케이션이 ReportEvent 함수를 호출하여 이벤트 로그에 항목을 쓰면 시스템은 매개 변수를 이벤트 로깅 서비스에 전달합니다. 이벤트 로깅 서비스는 정보를 사용하여 EVENTLOGRECORD 구조를 이벤트 로그에 씁니다. 다음 다이어그램에서는 이 프로세스를 보여 줍니다.
이벤트 레코드는 다음 방법 중 하나로 구성됩니다.
래핑하지 않습니다. 가장 오래된 레코드는 이벤트 로그 헤더 바로 뒤이며, 추가된 마지막 레코드( ELF_EOF_RECORD 이전) 다음에 새 레코드가 추가됩니다. 다음 예제에서는 래핑하지 않는 메서드를 보여줍니다.
HEADER (ELF_LOGFILE_HEADER) EVENT RECORD 1 (EVENTLOGRECORD) EVENT RECORD 2 (EVENTLOGRECORD) EOF RECORD (ELF_EOF_RECORD)
비 래핑은 이벤트 로그를 만들거나 이벤트 로그가 지워질 때 발생할 수 있습니다. 이벤트 로그 크기 제한에 도달할 때까지 이벤트 로그는 계속 래핑되지 않습니다. 이벤트 로그 크기는 MaxSize 구성 값 또는 시스템 리소스 양으로 제한됩니다.
이벤트 로그 크기 제한에 도달하면 래핑을 시작할 수 있습니다. 래핑은 보존 구성 값에 의해 제어 됩니다 . 이벤트 로그 구성 값에 대한 자세한 내용은 Eventlog 키를 참조하세요.
포장. 레코드는 순환 버퍼로 구성됩니다. 새 레코드가 추가되면 가장 오래된 레코드가 대체됩니다. 가장 오래된 레코드와 최신 레코드의 위치는 달라집니다. 다음 예제에서는 래핑 메서드를 보여줍니다.
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)
예제에서 가장 오래된 레코드는 더 이상 1이 아니지만 레코드 1에서 101까지의 공간을 덮어쓰기 때문에 102입니다.
시스템에서 레코드의 정수 수를 지워 최신 레코드의 여유 공간을 확보하므로 ELF_EOF_RECORD 가장 오래된 레코드 사이에는 약간의 공간이 있습니다. 예를 들어 최신 레코드가 100바이트 길이이고 가장 오래된 두 레코드가 75바이트 길이인 경우 시스템은 가장 오래된 두 레코드를 제거합니다. 새 레코드가 기록될 때 추가 50바이트가 나중에 사용됩니다.
이벤트 로그 파일의 크기가 고정되어 있고 파일 래핑의 레코드가 래핑될 때 파일 끝에 있는 레코드는 일반적으로 두 개의 레코드로 분할됩니다. 예를 들어 다음 쓰기의 위치가 파일 끝에서 100바이트이고 레코드 크기가 300바이트이면 처음 100바이트가 파일 끝에 기록되고 다음 200바이트는 ELF_LOGFILE_HEADER 직후 파일의 시작 부분에 기록됩니다. 파일 끝에 있는 사용 가능한 공간이 EVENTLOGRECORD (0x38 바이트)의 고정된 부분보다 작은 경우 모든 새 레코드는 ELF_LOGFILE_HEADER 직후 파일의 시작 부분에 기록됩니다. 파일 끝에 사용되지 않는 바이트는 패턴 0x00000027 채워집니다.
자세한 내용 및 코드 예제는 이벤트 보고를 참조하세요.