2009-08-17 60 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是否足以滿足您的需求?它將向您顯示所有正在運行的進程的跟蹤消息,而無需在啓動進程之前配置跟蹤偵聽器。

相關問題