如何在 C # 中添加(简单)跟踪?

我想介绍一些对我正在编写的 C # 应用程序的跟踪。遗憾的是,我从来没有真正记得它是如何工作的,并希望有一个参考品质的教程,检查不时。它应包括:

  • 为注册 TraceListener 添加 App.config/Web.config 内容
  • 如何在调用应用程序中设置它

你知道我们应该链接到的超级教程吗?


Glenn Slaven 为我指出了正确的方向:

<system.diagnostics>
<trace autoflush="true">
<listeners>
<add type="System.Diagnostics.TextWriterTraceListener" name="TextWriter"
initializeData="trace.log" />
</listeners>
</trace>
</system.diagnostics>

This will add a TextWriterTraceListener that will catch everything you send to with Trace.WriteLine, etc.

@ DanEparza 指出,您应该使用 Trace.TraceInformationTrace.TraceWarningTrace.TraceError而不是 Trace.WriteLine,因为它们允许您以与 string.Format相同的方式设置消息的格式。

提示: 如果您没有添加任何侦听器,那么您仍然可以看到 Sysinterals 程序 调试视图(Dbgview.exe)的跟踪输出:

118931 次浏览

DotNetCoders 上有一篇入门文章: http://www.dotnetcoders.com/web/Articles/ShowArticle.aspx?article=50。他们讨论了如何在配置文件中设置交换机以及如何编写代码,但是这已经很老了(2002)。

还有一篇关于 CodeProject 的文章: A Treatise on Using Debug and Trace classes, including Exception Handling,但是年龄相同。

CodeGuru has another article on custom TraceListeners: 实现一个自定义跟踪监听器

我跟踪了大约五个不同的答案,以及之前答案中的所有博客帖子,仍然有问题。我试图添加一个侦听器到一些现有的代码,正在跟踪使用的 TraceSource.TraceEvent(TraceEventType, Int32, String)方法,其中的 TraceSource对象初始化的字符串使其成为“命名源”。

对我来说,问题不在于创建源元素和 switch 元素的有效组合来瞄准这个源。下面是一个将日志记录到名为 tracelog.txt的文件的示例。以下代码:

TraceSource source = new TraceSource("sourceName");
source.TraceEvent(TraceEventType.Verbose, 1, "Trace message");

我成功地使用以下诊断配置进行了登录:

<system.diagnostics>
<sources>
<source name="sourceName" switchName="switchName">
<listeners>
<add
name="textWriterTraceListener"
type="System.Diagnostics.TextWriterTraceListener"
initializeData="tracelog.txt" />
</listeners>
</source>
</sources>


<switches>
<add name="switchName" value="Verbose" />
</switches>
</system.diagnostics>