次の方法で共有


イベント ログ ファイルの形式

各イベント ログには、固定サイズのヘッダー ( 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 Key」を参照してください。

  • 包装。 レコードは循環バッファーとして編成されます。 新しいレコードが追加されると、最も古いレコードが置き換えられます。 最も古いレコードと最新のレコードの場所は異なります。 次の例は、折り返しメソッドを示しています。

    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 バイトで、最も古い 2 つのレコードの長さが 75 バイトの場合、システムは最も古い 2 つのレコードを削除します。 新しいレコードが書き込まれると、後で余分な 50 バイトが使用されます。

    イベント ログ ファイルのサイズは固定されており、ファイル内のレコードが折り返されると、通常、ファイルの末尾にあるレコードは 2 つのレコードに分割されます。 たとえば、次の書き込みの位置がファイルの末尾から 100 バイトで、レコードのサイズが 300 バイトの場合、最初の 100 バイトはファイルの末尾に書き込まれ、次の 200 バイトは ELF_LOGFILE_HEADERの直後にファイルの先頭に書き込まれます。 ファイルの末尾にある使用可能な領域が EVENTLOGRECORD の固定部分 (0x38 バイト) より小さい場合、新しいレコードはすべて 、ELF_LOGFILE_HEADERの直後にファイルの先頭に書き込まれます。 ファイルの末尾にある未使用のバイトは、パターン 0x00000027で塗りつぶされます。

詳細とコード例については、「 イベントの報告」を参照してください。