Lak*_*ksh 5 logging etw event-listener
我试图使用新的语义应用程序块进行日志记录.根据MSDN,我有测试方法,用于检查EventSource
EventSourceAnalyzer.InspectAll(MyEventSource.Log);
Run Code Online (Sandbox Code Playgroud)
但是当我运行这个测试时,我得到了错误
An item with the same key has already been added
Run Code Online (Sandbox Code Playgroud)
通常,如果我们使用相同的事件ID,我们会收到此错误,但我为每个方法使用不同的EventID.下面是我的事件源类
EventSource(Name = "SLAB_1.1.1403.1")]
public class MyEventSource : EventSource
{
public class Keywords
{
public const EventKeywords Page = (EventKeywords)1;
public const EventKeywords DataBase = (EventKeywords)2;
public const EventKeywords Diagnostic = (EventKeywords)4;
public const EventKeywords Perf = (EventKeywords)8;
}
public class Tasks
{
public const EventTask Page = (EventTask)1;
public const EventTask DBQuery = (EventTask)2;
}
private static MyEventSource _log = new MyEventSource();
private MyEventSource() { }
public static MyEventSource Log { get { return _log; } }
[Event(1, Message = "Application Failure: {0}",
Level = EventLevel.Critical, Keywords = Keywords.Diagnostic)]
internal void Failure(string message)
{
if (this.IsEnabled(EventLevel.Critical, Keywords.Diagnostic))
{
this.WriteEvent(1, message);
}
}
[Event(2, Message = "Application Failure1: {0}",
Level = EventLevel.Critical, Keywords = Keywords.Diagnostic)]
internal void Failure(string message, string exception)
{
if (this.IsEnabled(EventLevel.Critical, Keywords.Diagnostic))
{
this.WriteEvent(2, message, exception);
}
}
[NonEvent]
internal void Failure(string message, Exception ex)
{
if (this.IsEnabled(EventLevel.Critical, Keywords.Diagnostic))
{
Failure(message, ex.ToString());
}
}
}
Run Code Online (Sandbox Code Playgroud)
小智 4
方法名称是键,因此由于您有两个名为 Failure 的方法,即使您有不同的参数列表,SLAB 基础结构也会将方法名称作为键添加到字典中。将您的 Failure 方法之一重命名为 Failure2 或类似的名称来解决此问题。
| 归档时间: |
|
| 查看次数: |
332 次 |
| 最近记录: |