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

时间:2014-10-12 07:28:06

标签: c# tracing etw

我正在寻找一种方法来实时查看使用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文件以便能够解码消息 - 我看到它们到了,但是它们被记录了“找不到格式信息”。

1 个答案:

答案 0 :(得分:1)

由于您没有直接登录ETW,您可以编写自己的TraceListener并添加它,就像添加EventProviderTraceListener(请参阅here)或使用您的app.config一样(请参阅here )。或者您可以使用ETW(如logman和traceview)与ETWTraceEventSource之类的here进行此操作,但需要管理员权限才能启动跟踪。