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

123

我想为我正在编写的C#应用程序添加一些跟踪功能。不幸的是,我永远无法真正记住它的工作原理,并希望有一个具备参考特性的教程,以便需要时进行查阅。它应该包括:

  • 用于注册TraceListeners的App.config / Web.config内容
  • 如何在调用应用程序中设置它

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


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.TraceInformationTrace.TraceWarningTrace.TraceError替代Trace.WriteLine,因为它们允许您像string.Format一样格式化消息。

提示:如果您没有添加任何侦听器,则仍然可以使用Sysinternals程序DebugView (Dbgview.exe)查看追踪输出:


4
我强烈建议使用Trace.TraceInformation等成员,而不是使用WriteLine。这些成员允许您像使用string.Format一样格式化消息。 - Dan Esparza
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>

1
代码片段无法运行。 - usefulBee
抱歉@usefulBee,这不是代码片段,它被自动标记为代码。这是配置代码,将成为您的App.config或Web.config的一部分,希望这有所帮助。 - Shaun

3

第一个链接跳转到404页面。 - Kcoder
第一个链接已经失效(404)。 - Peter Mortensen

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