如何在另一个进程中将EventListener附加到EventSource?

时间:2013-09-24 10:54:27

标签: c# tracing system.diagnostics

我正在尝试将侦听器附加到正在运行的进程,该进程使用EventSource来跟踪处理事件。通过继承EventListener并且(可能)需要调用EnableEvents来开始接收信息,我已经创建了自己的监听器。

所有重载的第一个参数是EventSource来配置和发送消息,但我不清楚如何在需要识别外部进程中的事件源时编写该实例。

我只是将它们作为一个概念验证,所以代码在控制台应用程序中运行,TestEventListener只是尝试将事件写入控制台窗口。

EventSource source = null;

using (var listener = new TestEventListener())
{
    listener.EnableEvents(source, EventLevel.Verbose);

    Console.ReadKey();
}

1 个答案:

答案 0 :(得分:6)

不幸的是,EventListener类不会跨进程,甚至跨AppDomains进行交谈。这不是EventListener类的目的。

相反,我建议您使用即将推出的(并且最有可能是来自MSFT的官方支持的ETW“读者”库) -

http://www.nuget.org/packages/Microsoft.Diagnostics.Tracing.TraceEvent

当你参与其中时,请查看 - http://oculus.codeplex.com/(这与TraceEvent非常相似,但有一堆不同的生成代码特殊窗口事件)