语义记录IsEnabled总是错误的吗?

时间:2016-06-01 07:21:11

标签: c# .net slab

我正在使用SLAB进程外在我的应用程序中记录ETW事件。

今天我在WcfTestClient.exe下托管的WCF服务中遇到了问题

当我将断点放入我的EventSource继承类的WriteEvent方法时,IsEnabled()返回false! 因此,没有事件写入我的控制台日志进程外:(

启动ConsoleEventSink时,我可以看到我的eventSource以LogAlways级别注册,而MatchAnyKeyword属性则为None

想知道这个问题出了什么问题吗?

提前致谢

2 个答案:

答案 0 :(得分:5)

您的for ($i=0; $i<9; $i++) { echo '<td>'.(isset($p[$i]) ? $p[$i] : '-').'</td>'; } 课程可能有错误。

您可以分析您的EventSource以查看它是否已正确定义。见https://dzimchuk.net/post/troubleshooting-slab-out-of-process-logging

有一个Nuget包:https://www.nuget.org/packages/EnterpriseLibrary.SemanticLogging.EventSourceAnalyzer/

尝试为其创建单元测试并检查结果

EventSource

修改

也可以使用.Net Core的(非官方)端口,请参阅this package

答案 1 :(得分:1)

基于提供者guid,事件级别和事件关键字过滤EventSource和etw记录器。我对consoleeventsink并不熟悉,但是如果你特意告诉接收器注意你的特定提供者,你通常会给它提供者的指导,你只会得到事件。在你的系统上运行着几千个(可能是数万个)etw提供程序,你不能只在级别和关键字上进行过滤 - 你也必须过滤guid。

一些etw消费者支持提供提供者名称而不是guid,在这种情况下,他们通过散列名称来生成guid。这通常适用于EventSource,因为这也是EventSource生成其指南的方式。