1

我正在使用Microsoft.Diagnostics.Tracing.EventSource nuget 包将事件写入事件日志。在继承自EventSource的自定义类中定义关键字时,如下所示:

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 的清单文件:

<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>

我不明白会话关键字的来源。这很烦人,因为当我使用以下代码生成事件时,这些神奇地创建的关键字会出现在事件日志中:

[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 );
}

所记录消息的关键字 read Session0,Session1,Session2,Session3,Perf,它派生自事件 xml 中的关键字值<Keywords>0x4000f08000000000</Keywords>

我自己已经编写了一个清单文件(使用 ecmangen),在该清单中,关键字部分如下所示

<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>

这导致此事件 xml: <Keywords>0x8000000000000001</Keywords>。这个结果显示得非常好。

4

1 回答 1

0

EventSource 自动定义并保留这些关键字供自己使用。不幸的是,我不知道如何禁用此行为。

于 2016-06-03T10:27:09.377 回答