使用System.Diagnostics进行简单的调试和日志记录

5

我希望能够在控制台应用程序中编写条目,以描述何时完成操作,并可能在某个时刻将它们写入.txt文件。

我希望它可以与同时运行的单独GUI应用程序一起使用,以便我可以同时使用应用程序并监视日志。

我只是认为Diagnostic类是正确的工具,但我以前从未使用过任何日志记录方法,因此我欢迎任何其他建议。

谢谢

5个回答

7

看一下System.Diagnostics.Trace。您可以向其添加不同的TraceListeners,包括控制台或文件的侦听器。然后将所有的Console.Write()/Console.WriteLine()调用替换为Trace.Write()/Trace.WriteLine(),这样就可以了。您甚至可以实现自己的TraceListener(非常容易),将消息发送到您的GUI应用程序。


1
此外,您可以使用System.Diagnostics.Debug进行跟踪,仅在执行调试编译(技术上设置DEBUG编译器常量时)启用。 - G-Wiz
谢谢Joel,有没有特定的地方可以了解如何使用它?像基本教程这样简单的东西就很好。 - Jamie Keeling
1
这真的不值得麻烦:只需要将Console.Write()更改为Trace.Write(),可能还需要添加一个system.diagnostics using引用。 - Joel Coehoorn

3

0.25美元的解决方案是:项目 + 属性,应用选项卡,输出类型 = 控制台应用程序。现在你有一个控制台窗口和你的常规用户界面。使用Console.WriteLine()编写的任何内容都将出现在控制台窗口中。


如果我遵循Joel Coehoorn的解决方案,我需要这样做吗? - Jamie Keeling
Joel的建议似乎是将跟踪记录到文件而不是控制台。 - Hans Passant
控制台是我需要可见的东西,是否可能将您和乔尔的方法结合起来? - Jamie Keeling
非常感谢nobugz的帮助,我会给你的答案投一票,但我相信你能理解我将答案给Joel的原因。 - Jamie Keeling
哎呀,这就是便宜解决方案的代价。正确的那个是Silky的。 - Hans Passant
显示剩余2条评论

2

使用SysInternals中的DebugView来捕获调试输出。这是一个独立的GUI应用程序,可捕获跟踪/调试输出。

这篇文章《使用DebugView和C#》提供了一个示例。


1

我建议您尽快开始使用log4net;它相当容易使用(尽管设置有点复杂,需要进行一些配置项),并且它可以成为一种非常完美的系统。


4
可以将此建议与提问者考虑使用System.Diagnostics进行比较/对比。首先,你可以免费使用System.Diagnostics;而log4net是一个单独的程序集。此外,由于它是BCL的一部分,更多的.NET开发人员可能知道如何使用System.Diagnostics,这有助于项目的维护。 - G-Wiz
1
gWiz: 你可以在你自己的答案中自由去做 :) 就我而言,我不认为这有任何意义;在我看来,毫无疑问最好的方法是选择log4net。也许我可以详细解释一下为什么,但我将其留作一个需要通过研究来完成的练习 :) 并不是所有事情都需要手把手教给别人,当然我也没有耐心这样做。 - Noon Silk
我曾经使用nlog,但现在转向了Azure。突然间事情变得不那么简单了,因为我不得不重新考虑我的文件系统日志记录,并记录到一个不太直观的云存储解决方案中。我的看法是,系统诊断似乎并不是那么愚蠢的前进方式。 - Phil Cooper

-1
这是我的自我推销的回答:使用我的日志框架。与其他一些日志框架不同,它非常易于使用和配置。它还具有非常小的占用空间。此外,它还带有一个小应用程序,您可以使用它实时查看日志。听起来对我来说,这就是你需要的一切。

1
这听起来非常有前途,但还有其他替代方案,最重要的是免费的。 - Jamie Keeling
2
非免费:非商业用途为$5,商业/网站许可证为$49。 - Ray Hulha

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接