.NET / C#Trace - 查看对话框中的跟踪日志&可选择保存到文件

时间:2011-10-11 20:43:44

标签: c# .net logging

我想在一个简单的c#(WPF)应用程序中实现一些基本的跟踪,它只能由测试人员在内部使用。我基本上希望测试人员能够查看他们所做的事情的日志,然后可选地将其保存到他们选择的文件中。这将允许测试人员在测试中看到他们迄今为止所做的事情,并可选择将日志保存到文件中以供后代使用。

在研究如何在.Net中实现简单跟踪(使用System.Diagnostics.Trace)时,似乎默认答案是使用log4net(或者NLog,如{{3相反。我的问题是我的跟踪不需要功能齐全或有什么特别之处,所以实现外部库似乎有些过分(这似乎是由Jeff Atwood自己在{{3}的评论中支持的。 (和其他地方,但仍然......))。如果log4net或NLog实际上是最好的/唯一的答案(即使在我的情况下),我仍然可以接受它(即我并不完全接受使用它们的想法,但不是非常兴奋),但尽量不要(或专注于)那个(如果可能的话)......

考虑到这一点,是否有人对如何实现监听器有任何建议,以便我可以弹出一个跟踪日志可见的对话框(例如通过View Log按钮),然后可选择保存那个对话框(或跟踪日志本身)到一个文件(例如通过`View中的Save Log按钮?

实现一个只是将跟踪记录到应用程序中的某种集合的侦听器似乎相对简单,在这种情况下View只是在列表框中显示集合或者Save 1}}只是将该列表保存到文件(duh),但是如果应用程序长时间保持打开并且跟踪日志增长超大,该怎么办?也许是只记录最后x条消息的缓冲区类型集合?建议?

1 个答案:

答案 0 :(得分:1)

将记录器的输出重定向到文本框取决于您选择的技术。我建议使用log4net或NLog(我自己使用第一个)而不是简单地使用.NET的内置类(或你自己的),因为它更易于配置,迟早会证明它有价值。

我正在使用log4net,网上有几个关于如何将其输出附加到文本框的示例(例如this onethis one - 尽管后一个例子可能缺乏如果在多线程应用程序中使用,则第一次看到一些UI线程同步)。不仅如此,您还可以选择将数据记录到数据库,通过电子邮件发送,将其写入Windows的事件日志以及许多其他好东西,只需在配置文件中添加几行即可。

首次使用时,它看起来有点矫枉过正,但事实并非如此。设置很快,有很多例子。一旦您使用它,您将继续将其添加到您未来的所有项目中。