web-dev-qa-db-ja.com

カスタムイベントログエントリに使用するイベントIDは何ですか?

Windows EventLogへのログ記録中にカスタムアプリケーションで使用する必要がある有効なイベントIDの範囲はありますか?または、任意のイベントID(1,2,3,4 ....)を使用できます。 PS、私はC#.NETで開発しています。

36
Niran

イベントIDはアプリケーション固有なので、好きな範囲を使用できます。 IDを2回使用しないように、またはデバッグを容易にするために、使用したものと場所を文書化してください。

しかし、覚えておいてください...

ヘンリーフォードが「黒であれば、どんな色でもかまいません」と言ったときのように、その範囲が0〜65535の範囲内にある限り、好きな範囲を使用することもできます。

30
Martin

案の定、使用するイベントIDとその意味を定義および追跡するのは作成者次第です。

ここに参照があります: http://msdn.Microsoft.com/en-us/library/e29k5ebc.aspx -特に興味深いのは、IPv6アドレスでメッセージを書き込まないことに関する部分です(文字)をイベントログに記録します。それを回避するためにパラメーターを使用できると思います。

7
colbybhearn

IDのhiビットは、テスト、デバッグ、および開発に使用されるその他のフラグ用に予約されています。使用可能なビットは次のとおりです。

0x0000-0xffff

参照: イベントメッセージ構造

上位ビットは避ける必要がありますが、カスタムソースを作成する場合は、下位ビットのすべての値を使用できます。システムまたは既存のソースを使用すると、衝突して誤ったメッセージを受け取る可能性があります。メッセージは登録されたソースから取得されます。メッセージDLLファイル。カスタムメッセージファイルは、SDKのメッセージファイルコンパイラを使用して構築できます。

3
JRV

Edit1:私はそれをテストしましたが、eventIDが32ビットであることは事実ではありません。16ビットのみです。

eventIdはInt32で、-2,147,483,648〜2,147,483,647です。

EventLog.WriteEntryメソッド(String、String、EventLogEntryType、Int32)

public static void WriteEntry(
    string source,
    string message,
    EventLogEntryType type,
    int eventID
)
1
MrHIDEn

技術的には、そのために1-65536の間の任意の値を使用できます。

しかし、あなたが私のように大量の詳細なログを書き込む人である場合は、一連のエントリを一緒に関連付けるのが難しいことに気づくでしょう。コードが実行されるたびに、ランダムな一意の値を生成することをお勧めしますこれにより、イベントを識別できます。アプリケーションログにすべてを書き込むのではなく、これを使用するために独自のログとソースを作成することをお勧めします。いいね

 Random rnd = new Random();
 EventId = rnd.Next(0, 65535);
0
Vinod Srivastav