2 回答
![?](http://img1.sycdn.imooc.com/545862120001766302200220-100-100.jpg)
TA贡献1802条经验 获得超6个赞
似乎您需要将一个附加EventListener到您的EventSource才能启用它:
class CustomEventListener : EventListener
{
protected override void OnEventWritten(EventWrittenEventArgs eventData)
{
}
}
void Main()
{
var src = new CustomEventSource();
var listener = new CustomEventListener();
Console.WriteLine(src.IsEnabled(EventLevel.LogAlways, EventKeywords.None)); // false
listener.EnableEvents(src, EventLevel.Error);
Console.WriteLine(src.IsEnabled(EventLevel.LogAlways, EventKeywords.None)); // true
Console.WriteLine(src.IsEnabled(EventLevel.Critical, EventKeywords.None)); // true
Console.WriteLine(src.IsEnabled(EventLevel.Verbose, EventKeywords.None)); // false
}
编辑:
我还找到了EvenSource.SendCommand可以EventCommand.Enable作为参数但只ArgumentException为我抛出一个的方法。是的,文件EventSource是真的不好。
![?](http://img1.sycdn.imooc.com/545861f00001be3402200220-100-100.jpg)
TA贡献1817条经验 获得超14个赞
从 public 的源代码bool IsEnabled(EventLevel level, EventKeywords keywords)
:
如果启用了大于或等于“级别”并设置了“关键字”之一的事件,则返回 true。
请注意,此函数的结果只是特定事件是否处于活动状态的近似值。它仅用于在未打开日志记录时避免昂贵的日志记录计算,因此它有时会返回误报(但在返回假时总是准确的)。EventSources 可以自由进行额外的过滤。
请注意,错误返回是准确的,因此您需要查看您的级别和关键字。
@Hans 是正确的。我忽略了指出您需要开始收集事件才能启用它们。您可以通过编程方式执行此操作,也可以使用一系列工具(例如 PerfView)。
- 2 回答
- 0 关注
- 281 浏览
添加回答
举报