C# 语义日志被禁用,是否总是错误?

C# 语义日志被禁用,是否总是错误?,c#,.net,slab,C#,.net,Slab,我正在使用进程外SLAB记录应用程序中的ETW事件 今天,我在WcfTestClient.exe下托管的WCF服务中遇到了一个问题 当我将断点放入EventSource继承类的WriteEvent方法时,IsEnabled()返回false!!! 因此,不会将任何事件写入我的控制台注销进程:( 启动ConsoleEventsIK时,我可以看到我的eventSource注册为LogAlways级别,MatchAnyKeyword属性为None 有没有办法检查这个问题出了什么问题 提前感谢您的事件源

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

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

当我将断点放入EventSource继承类的WriteEvent方法时,IsEnabled()返回false!!! 因此,不会将任何事件写入我的控制台注销进程:(

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

有没有办法检查这个问题出了什么问题


提前感谢

您的
事件源
类中可能有错误

您可以分析EventSource以查看其定义是否正确。请参阅

有一个Nuget软件包:

尝试为它创建一个单元测试并检查结果

[TestClass]
public class EventSourceTests
{
    [TestMethod]
    public void MyEventSourceShouldBeValid()
    {
        var analyzer = new EventSourceAnalyzer();

        analyzer.Inspect(MyEventSource.Log);
    }
}
编辑


A(非官方)Net Core端口也可用,请参阅。

EventSource和etw记录器根据提供程序guid、事件级别和事件关键字进行筛选。我不熟悉ConsoleEventsk,但只有在您明确告知接收器注意您的特定提供程序(通常是通过提供程序的guid)的情况下,您才会收到事件实际上,在您的系统上运行的etw提供程序有数千个(可能数万个),您不能只根据级别和关键字进行筛选,还必须根据guid进行筛选

一些etw使用者支持提供提供程序名称而不是guid,在这种情况下,他们通过哈希名称生成guid。这通常适用于EventSource,因为这也是EventSource生成指南的方式