我花了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. 捕获VS 2010中的输出窗口消息
- 3. 在Visual Studio中没有输出窗口的调试选项
- 4. 有没有一种方法可以在Grails Spock测试中输出到STDOUT?
- 5. 将调试消息写入Xcode输出窗口
- 6. 有没有一种方法可以在Espresso测试下的Activity中捕获被调用的方法
- 7. 有没有办法在Perl中输出调试消息而不是管道?
- 8. 有没有一种方法来捕获用户命令bash哪些没有找到,并用它做什么?
- 9. 有没有一种工具可以侦测发送到窗口的消息
- 10. 硒C# - 测试输出没有出现在控制台窗口
- 11. 在另一窗口中捕获窗口输出
- 12. 当没有连接到调试器时,有没有办法在iPhone上捕获NSLog的输出?
- 13. 在java中捕获xsl:消息输出
- 14. 有没有一种方法来单元测试异步方法?
- 15. h:消息没有输出
- 16. 有没有一种简单的方法,用C++在mac OS X中打开一个(或多个)opengl窗口?
- 17. 捕获对象上的所有方法/消息调用
- 18. 在Visual Studio 2010中将输出消息写入“输出窗口”的最简单方法?
- 19. 有没有方法可以轻松地将错误消息插入到Fuelphp验证输出的输出中?
- 20. 有没有一种简单的方法来编程列出.MO文件中的所有消息ID?
- 21. 没有我的窗口捕获桌面
- 22. 没有主窗口的屏幕捕获
- 23. 来自模型的Rails错误消息,有没有一种方法来订购它们?与accepted_nested_attributes_for
- 24. 在Turbo C的消息窗口中显示输出
- 25. 在一个地方捕获调试错误消息
- 26. 有没有一种方法可以将我的iPhone屏幕捕获为视频?
- 27. mockito:有没有一种方法来捕获stubbed方法的返回值?
- 28. 有没有一种方法可以获得在kafka流中消费的每条消息的偏移量?
- 29. Python,捕获OS输出并发送不一致的消息
- 30. wxPython的消息对话框错误“窗口捕获鼠标没有处理wxEVT_MOUSE_CAPTURE_LOST”
我把这个作为评论而不是答案......我希望设施能够登录到一个窗口,我甚至希望它能够远程工作。我实现了一个Logging类,然后将它作为UDP传输。这具有各种第三方工具“聆听”和观看日志(例如任何可以听Udp的)的好的副作用。 – 2012-07-26 14:28:14
是指所有“调试消息”,还是只是应用程序通过System.Diagnostics.Debug类输出的调试消息? – 2012-07-26 14:35:29