C# 在traceview中实时显示EventProviderTraceListener中的事件

C# 在traceview中实时显示EventProviderTraceListener中的事件,c#,trace,etw,C#,Trace,Etw,我正在寻找一种方法来实时查看使用EventProviderTraceListener记录的事件。我可以使用logman启动和停止跟踪会话,然后解码生成的.etl文件,但我希望在事件到达时看到它们 下面是我用于测试的示例C#类: public class TraceTest { private static Guid ProviderGuid = new Guid("{2EC22694-F8D3-4066-B089-300DF0749C71}"); private static E

我正在寻找一种方法来实时查看使用EventProviderTraceListener记录的事件。我可以使用logman启动和停止跟踪会话,然后解码生成的.etl文件,但我希望在事件到达时看到它们

下面是我用于测试的示例C#类:

public class TraceTest
{
    private static Guid ProviderGuid = new Guid("{2EC22694-F8D3-4066-B089-300DF0749C71}");
    private static EventProviderTraceListener listener = new EventProviderTraceListener(ProviderGuid.ToString(), Test Listener", "::");
    private static TraceSource source = new TraceSource("TestSource", SourceLevels.All);

    public TraceTest()
    {
        source.Listeners.Add(listener);

        source.TraceInformation("Tracing prototype.");
    }
}

使用traceview,我可以通过输入guid来启动新的跟踪会话,但我不知道在哪里查找tmf文件以便能够解码消息-我看到消息到达,但它们被记录为“未找到格式信息”.

由于您不直接登录ETW,您可以编写自己的日志并添加,就像添加EventProviderTraceListener(请参阅)或使用app.config(请参阅)一样。或者,您可以使用ETW(如logman和traceview)和like来执行此操作,但这需要管理员权限来启动跟踪。

试试这个:我可以要求管理员权限来启动和停止跟踪。我将看一看ETWTraceEventSource,但我真的希望有一些现有的解决方案(如使其在traceview中工作)或Microsoft提供的工具。由于traceview无法工作,我最终编写了自己的简单跟踪阅读器。