次の方法で共有


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

各イベント ログには、固定サイズのヘッダー (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 構成値またはシステム リソースの量によって制限されます。

    イベント ログのサイズ制限に達すると、折り返しが開始される可能性があります。 折り返しは、保持 構成値によって制御されます。 イベント ログの構成値の詳細については、「イベント ログ キーの 」を参照してください。

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

    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 から 101 の領域が上書きされたため、最も古いレコードは 1 ではなく 102 です。

    ELF_EOF_RECORD レコードと最も古いレコードの間にはスペースが存在します。これは、最新のレコードの空き領域を空けるために、整数のレコード数が消去されるためです。 たとえば、最新のレコードの長さが 100 バイトで、最も古い 2 つのレコードの長さが 75 バイトの場合、システムは最も古い 2 つのレコードを削除します。 新しいレコードが書き込まれると、後で余分な 50 バイトが使用されます。

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

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