2016-05-19 13 views
1

イベントログにイベントを書き込むために、Microsoft.Diagnostics.Tracing.EventSourceナゲットパッケージを使用しています。このようEventSourceから継承私のカスタムクラスにキーワードを定義する場合:セッションのキーワードはどこから来た私は理解していないMicrosoft.Diagnostics.Tracing.EventSourceのキーワードを正しく定義する方法

<keywords> 
    <keyword name="DataBase" message="$(string.keyword_DataBase)" mask="0x1"/> 
    <keyword name="Page" message="$(string.keyword_Page)" mask="0x2"/> 
    <keyword name="Diagnostic" message="$(string.keyword_Diagnostic)" mask="0x4"/> 
    <keyword name="Perf" message="$(string.keyword_Perf)" mask="0x8"/> 
    <keyword name="Session3" message="$(string.keyword_Session3)" mask="0x100000000000"/> 
    <keyword name="Session2" message="$(string.keyword_Session2)" mask="0x200000000000"/> 
    <keyword name="Session1" message="$(string.keyword_Session1)" mask="0x400000000000"/> 
    <keyword name="Session0" message="$(string.keyword_Session0)" mask="0x800000000000"/> 
</keywords> 

public class Keywords 
{ 
    public const EventKeywords Page = (EventKeywords) 0x1; 
    public const EventKeywords DataBase = (EventKeywords) 0x2; 
    public const EventKeywords Diagnostic = (EventKeywords) 0x4; 
    public const EventKeywords Perf = (EventKeywords) 0x8; 
} 

は、私は、次のXMLを含むマニフェストファイルを取得します。ログに記録されたメッセージの

[Event(202, Message = "Writing Eventlog With keywords etc. {0}", Level = EventLevel.Verbose, Keywords = Keywords.Perf, Task = EventTask.None, Opcode = EventOpcode.Info, Channel = EventChannel.Debug)] 
public void DebugWithKeywordEtc(string message) 
{ 
    this.WriteEvent(202, message); 
} 

キーワードSession0,Session1,Session2,Session3,Perfを読んで、イベントのXMLのキーワード値から派生:私はイベントを生成するには、このコードを使用するときに、これらの魔法の作成キーワードがイベントログに表示するので、それは非常に迷惑です<Keywords>0x4000f08000000000</Keywords>

私はすでに(ecmangenを使用して)マニフェストファイルを自分自身を執筆しており、そのマニフェストに、キーワードのセクションでは、このイベントのXMLになり、この

<keywords> 
    <keyword name="DataBase" message="$(string.keyword_DataBase)" mask="0x1"/> 
    <keyword name="Page" message="$(string.keyword_Page)" mask="0x2"/> 
    <keyword name="Diagnostic" message="$(string.keyword_Diagnostic)" mask="0x4"/> 
    <keyword name="Perf" message="$(string.keyword_Perf)" mask="0x8"/> 
</keywords> 

次のようになります。<Keywords>0x8000000000000001</Keywords>。この結果は完璧に表示されます。

答えて

0

EventSourceは、自動的にこれらのキーワードを定義し、それらを独自に使用するために予約します。残念ながら、この動作を無効にする方法はわかりません。

関連する問題