我花了3天的時間查找這個,我找不到一個可靠的答案。我想捕獲調試消息並將它們輸出到列表日誌。我正在嘗試在C#中執行此操作。想從社區那裏得到一些幫助,讓我指出正確的方向。有沒有一種在C#中捕獲調試消息並將它們輸出到單獨窗口的方法?
回答
嗯,當然可以。調試輸出不限於顯示在輸出窗口中。
您只需編寫一個自定義偵聽器並將其添加到Debug.Listeners
collection即可。你可以找到關於添加跟蹤監聽器的完整文檔here on MSDN。
唯一需要注意的是監聽器共享調試和跟蹤輸出,所以如果您添加一個,您將收到兩種類型的消息。
如果這聽起來像是太多的工作,而您只需要一個快捷的解決方案,您可以從Sysinternals下載免費的DebugView utility。這個整潔的小工具是一個獨立的應用程序,它可以運行,並監聽機器上安裝的所有程序的所有調試輸出。如果你使用它,你甚至不需要在應用程序中改變一行代碼 - 所有發送到Debug.Write
的輸出都將顯示在DebugView窗口中。
或者,如果您正在尋找長期的東西,甚至可能隨應用程序一起提供,我鼓勵您調查添加日誌記錄功能。有許多優秀的開源庫提供了這種功能,當您的應用程序部署到具有未知配置的系統時,它在現場非常有用。
目標是捕獲消息並將其記錄到列表中。一旦我有了這樣的設置,我正在努力做到這一點,以便您可以使用複選框關閉您不想看到的消息,或者幫助您對某些消息進行排序和過濾。 – GabeTHEGeek 2012-07-26 14:33:35
@GabeTHEGeek然後,聽起來對我來說,您希望爲您的應用程序提供全面的日誌記錄框架。他們擁有所有這些內置的東西。您不必編寫一堆自己的代碼來分類和過濾消息。 [一些可能的選項在這裏討論](http://stackoverflow.com/questions/126540/what-is-your-net-logging-framework-of-choice),如果你是Google,你可能會發現更多。我沒有一個我可以推薦的偏好或特定的偏好,但是如果你選擇一個偏好的偏好,你應該很好。 – 2012-07-26 14:36:35
感謝您的所有信息。這個def幫助我走上正確的道路。該計劃是與我們的應用程序一起發貨,所以你是非常正確的。 – GabeTHEGeek 2012-07-26 14:44:38
就日誌來說,Log4Net是堅實和易於使用。您可以通過NuGet將它添加到您的項目中(如果您不知道NuGet是什麼,請檢查它:非常好)。它允許你或多或少地登錄你想要的任何地方(控制檯,文件,郵件,分貝...)
網站包含良好的文檔和示例。
Nuget網址:http://nuget.org/packages/log4net – 2012-07-26 14:49:55
- 1. 沒有出現在VS調試器中的Sys.Debug消息輸出窗口
- 2. 有沒有辦法從VMware實例捕獲調試輸出?
- 3. 捕獲VS 2010中的輸出窗口消息
- 4. NUnit的沒有顯示調試消息在其窗口
- 5. 捕捉異常並將它們輸出到django的消息系統
- 6. 在Visual Studio中沒有輸出窗口的調試選項
- 7. 有沒有一種方法可以在Grails Spock測試中輸出到STDOUT?
- 8. 將調試消息寫入Xcode輸出窗口
- 9. 有沒有一種方法可以在Espresso測試下的Activity中捕獲被調用的方法
- 10. Visual Studio輸出窗口中沒有WPF消息!
- 11. 有沒有一種簡單的方法在Python中編寫它?
- 12. 有沒有辦法在Perl中輸出調試消息而不是管道?
- 13. 有沒有一種方法來捕獲用戶命令bash哪些沒有找到,並用它做什麼?
- 14. 有沒有一種工具可以偵測發送到窗口的消息
- 15. MongoDB:有沒有一種方法來調整輸出?
- 16. 硒C# - 測試輸出沒有出現在控制檯窗口
- 17. 在另一窗口中捕獲窗口輸出
- 18. 有沒有一種簡單的方法將Java applet合併到ASP.NET頁面中?
- 19. 在Android Studio中,如何獲得一個類的所有方法的彈出窗口(並添加它們)?
- 20. 拋出異常並將它們捕獲到其他地方
- 21. 父窗口沒有收到窗口的消息(Key Events)
- 22. 當沒有連接到調試器時,有沒有辦法在iPhone上捕獲NSLog的輸出?
- 23. 有沒有一種方法可以在.sls或.jnija文件中的saltstack中記錄調試消息?
- 24. 有沒有一種方法來單元測試異步方法?
- 25. 在java中捕獲xsl:消息輸出
- 26. 有沒有一種簡單的方法,用C++在mac OS X中打開一個(或多個)opengl窗口?
- 27. h:消息沒有輸出
- 28. 捕獲對象上的所有方法/消息調用
- 29. 有沒有一種簡單的方法來垂直居中div並讓它們以內聯方式顯示?
- 30. 有沒有一種方法在VIM中有窗口導航換行
我把這個作爲評論而不是答案......我希望設施能夠登錄到一個窗口,我甚至希望它能夠遠程工作。我實現了一個Logging類,然後將它作爲UDP傳輸。這具有各種第三方工具「聆聽」和觀看日誌(例如任何可以聽Udp的)的好的副作用。 – 2012-07-26 14:28:14
是指所有「調試消息」,還是隻是應用程序通過System.Diagnostics.Debug類輸出的調試消息? – 2012-07-26 14:35:29