我正在使用SLAB进程外在我的应用程序中记录ETW事件。
今天我在WcfTestClient.exe下托管的WCF服务中遇到了问题
当我将断点放入我的EventSource继承类的WriteEvent方法时,IsEnabled()返回false! 因此,没有事件写入我的控制台日志进程外:(
启动ConsoleEventSink时,我可以看到我的eventSource以LogAlways级别注册,而MatchAnyKeyword属性则为None
想知道这个问题出了什么问题吗?
提前致谢
答案 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生成其指南的方式。