【问题标题】:.NET/C# Trace - view trace log in dialog & optionally save to file.NET/C# Trace - 在对话框中查看跟踪日志并可选择保存到文件
【发布时间】:2011-10-11 20:43:43
【问题描述】:

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

在研究如何在 .Net 中实现简单的跟踪(使用 System.Diagnostics.Trace)时,似乎默认答案是使用 log4net(或者可能是 NLog,如 Is log4net dead? 中所引用)。我的问题是我的跟踪不需要功能齐全或有什么特别的,所以实现一个外部库似乎有点矫枉过正(这似乎得到了 Jeff Atwood 本人在How to save the output of a console application 的评论中的支持(和其他地方的其他人,但仍然......))。事实上,如果 log4net 或 NLog 是最好/唯一的答案(即使在我的情况下),我仍然可以接受它(即我并不完全接受使用它们的想法,但对此并不感到非常兴奋),但尽量不要(/只专注于)那个(如果可能的话)......

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

似乎实现一个侦听器会相对简单将该列表保存到文件(duh),但是如果应用程序长时间保持打开状态并且跟踪日志变得超大怎么办?也许是一个缓冲区类型的集合,它只记录最后的x 消息?有什么建议吗?

【问题讨论】:

    标签: c# .net logging


    【解决方案1】:

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

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

    对于第一次使用,它可能看起来有点矫枉过正,但实际上并非如此。设置很快,并且有很多例子。使用后,您将继续将其添加到您未来的所有项目中。

    【讨论】:

      猜你喜欢
      • 2011-04-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-21
      • 1970-01-01
      • 2013-09-23
      相关资源
      最近更新 更多