122

我想向我正在编写的 C# 应用程序介绍一些跟踪。可悲的是,我永远无法真正记住它是如何工作的,并且想要一个具有参考质量的教程来不时检查。它应该包括:

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

你知道我们应该链接到的 über 教程吗?


Glenn Slaven 为我指明了正确的方向。将此添加到您的 App.config/Web.config 里面<configuration/>

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

这将添加一个TextWriterTraceListener将捕获您发送到的所有内容Trace.WriteLine等。

@DanEsparza 指出您应该使用Trace.TraceInformation,Trace.TraceWarningTrace.TraceError不是Trace.WriteLine, 因为它们允许您以与 . 相同的方式格式化消息string.Format

提示:如果您不添加任何侦听器,那么您仍然可以使用 Sysinternals 程序DebugView ( Dbgview.exe) 看到跟踪输出:

4

2 回答 2

5

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

对我来说,问题不是创建一个有效的源和开关元素组合来定位这个源。这是一个示例,它将记录到一个名为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>
于 2016-01-27T10:36:57.383 回答
3

DotNetCoders 有一篇关于它的入门文章:http: //www.dotnetcoders.com/web/Articles/ShowArticle.aspx ?article=50 。他们谈论如何在配置文件中设置开关以及如何编写代码,但它已经很老了(2002 年)。

CodeProject 上还有一篇文章:A Treatise on Using Debug and Trace classes,包括异常处理,不过是同龄人。

CodeGuru 有另一篇关于自定义 TraceListener 的文章:实现自定义 TraceListener

于 2008-08-26T09:53:13.093 回答