Я использую пакет nuget Microsoft.Diagnostics.Tracing.EventSource для записи событий в журнал событий. При определении ключевых слов в моем пользовательском классе наследующего EventSource так:Как правильно определить ключевые слова в Microsoft.Diagnostics.Tracing.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);
}
ключевых слов записанного сообщения читать 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>
. Этот результат отображается отлично.