2012-07-26 52 views
4

我花了3天的時間查找這個,我找不到一個可靠的答案。我想捕獲調試消息並將它們輸出到列表日誌。我正在嘗試在C#中執行此操作。想從社區那裏得到一些幫助,讓我指出正確的方向。有沒有一種在C#中捕獲調試消息並將它們輸出到單獨窗口的方法?

+0

我把這個作爲評論而不是答案......我希望設施能夠登錄到一個窗口,我甚至希望它能夠遠程工作。我實現了一個Logging類,然後將它作爲UDP傳輸。這具有各種第三方工具「聆聽」和觀看日誌(例如任何可以聽Udp的)的好的副作用。 – 2012-07-26 14:28:14

+0

是指所有「調試消息」,還是隻是應用程序通過System.Diagnostics.Debug類輸出的調試消息? – 2012-07-26 14:35:29

回答

6

嗯,當然可以。調試輸出不限於顯示在輸出窗口中。

您只需編寫一個自定義偵聽器並將其添加到Debug.Listeners collection即可。你可以找到關於添加跟蹤監聽器的完整文檔here on MSDN

唯一需要注意的是監聽器共享調試和跟蹤輸出,所以如果您添加一個,您將收到兩種類型的消息。

如果這聽起來像是太多的工作,而您只需要一個快捷的解決方案,您可以從Sysinternals下載免費的DebugView utility。這個整潔的小工具是一個獨立的應用程序,它可以運行,並監聽機器上安裝的所有程序的所有調試輸出。如果你使用它,你甚至不需要在應用程序中改變一行代碼 - 所有發送到Debug.Write的輸出都將顯示在DebugView窗口中。

或者,如果您正在尋找長期的東西,甚至可能隨應用程序一起提供,我鼓勵您調查添加日誌記錄功能。有許多優秀的開源庫提供了這種功能,當您的應用程序部署到具有未知配置的系統時,它在現場非常有用。

+0

目標是捕獲消息並將其記錄到列表中。一旦我有了這樣的設置,我正在努力做到這一點,以便您可以使用複選框關閉您不想看到的消息,或者幫助您對某些消息進行排序和過濾。 – GabeTHEGeek 2012-07-26 14:33:35

+0

@GabeTHEGeek然後,聽起來對我來說,您希望爲您的應用程序提供全面的日誌記錄框架。他們擁有所有這些內置的東西。您不必編寫一堆自己的代碼來分類和過濾消息。 [一些可能的選項在這裏討論](http://stackoverflow.com/questions/126540/what-is-your-net-logging-framework-of-choice),如果你是Google,你可能會發現更多。我沒有一個我可以推薦的偏好或特定的偏好,但是如果你選擇一個偏好的偏好,你應該很好。 – 2012-07-26 14:36:35

+0

感謝您的所有信息。這個def幫助我走上正確的道路。該計劃是與我們的應用程序一起發貨,所以你是非常正確的。 – GabeTHEGeek 2012-07-26 14:44:38

0

就日誌來說,Log4Net是堅實和易於使用。您可以通過NuGet將它添加到您的項目中(如果您不知道NuGet是什麼,請檢查它:非常好)。它允許你或多或少地登錄你想要的任何地方(控制檯,文件,郵件,分貝...)

網站包含良好的文檔和示例。

+0

Nuget網址:http://nuget.org/packages/log4net – 2012-07-26 14:49:55

相關問題