2012-07-26 53 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

相关问题