2009-08-17 56 views
6

我不确定这是否可能以我设想的方式进行,所以我希望有人能帮我把这个问题包裹起来。如何将跟踪侦听器附加到正在运行的进程?

我想要将一个TraceListener注入正在运行的进程 - 种类。我实际上并不关心我如何附加到进程,但最终目标是侦听正在运行的进程的跟踪输出并将其转储到控制台窗口。

我可以附加到过程没关系,我可以写一个TraceListener好吧...我来的地方是中间的位置。任何人有任何线索,如果这可以做到?如果是这样,你能否给我一个正确的方向,因为我看不到这里的树林。

也许我试图以错误的方式来解决这个问题?

+1

下面是[Log4net doc for OutputDebugString appender]的链接(http://logging.apache.org/log4net/release/config-examples.html#OutputDebugStringAppender)。我从谷歌搜索“log4net OutputDebugString”来到这里,但页面上没有直接链接 – yzorg 2011-02-18 16:00:47

回答

3

我不认为这是实际的。在运行时创建一个监听器很容易,但这是应用程序必须做的事情,它包括向列表添加内容。

您可能希望确保默认的监听不会被删除,并使用OutputDebug tool在听。

+0

有趣 - 这只是附加到默认监听器?这将为我节省大量的时间。我想我必须自己写一些东西 - 但如果有人已经为我完成了这项工作,那么重新发明轮子就没有意义了。 – BenAlabaster 2009-08-17 22:04:24

+0

是的,默认侦听器使用OutputDebugString API(WIN32)。这是在Visual Studio调试器中显示的内容。 – 2009-08-17 23:43:37

1

当我想查看调试输出,我用的log4netDebugView的组合。我可以让log4net监视一个配置文件,以允许我在运行时更改log4net日志记录级别,或者我可以在DebugView中使用过滤器。

+0

如果我使用log4net,我可以轻松使用tracelistener。目的是试图附加到一个已经运行的应用程序,而不会把它关闭。 – BenAlabaster 2009-08-17 22:00:53

+0

我不太了解跟踪侦听器,但是log4net可以监视配置文件,以便在不关闭应用程序的情况下调整日志记录级别。 DebugView只监视在Windows中写入OutputDebugString API调用的所有进程。你不附加到特定的过程,但你可以过滤。 – 2009-08-17 22:04:07

+0

有趣的是,谢谢,我会研究一下 – BenAlabaster 2009-08-17 22:09:04

2

来自Sysinternals的DbgView是否足以满足您的需求?它将向您显示所有正在运行的进程的跟踪消息,而无需在启动进程之前配置跟踪侦听器。

相关问题