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

时间:2008-08-26 09:12:56

标签: c# trace

我想向我正在编写的C#应用​​程序介绍一些跟踪。可悲的是,我永远不会真的记得它是如何工作的,并且希望有一个具有参考品质的教程来检查它们。它应该包括:

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

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

编辑:格伦斯拉文指出我正确的方向。将其添加到<configuration/>内的App.config / Web.config:

<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)查看跟踪输出:http://technet.microsoft.com/en-us/sysinternals/bb896647.aspx

3 个答案:

答案 0 :(得分:16)

我写了一篇关于使用Trace Listener的简短文章 - 也许它会有所帮助,特别是初学者 - http://www.daveoncsharp.com/2009/09/create-a-logger-using-the-trace-listener-in-csharp/

答案 1 :(得分:5)

我跟随了大约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>

答案 2 :(得分:3)

DotNetCoders上有一篇文章:http://www.dotnetcoders.com/web/Articles/ShowArticle.aspx?article=50,他们讨论如何在配置文件中设置开关&amp;如何编写代码,但它已经很老了(2002)。还有另一篇关于CodeProject的文章:http://www.codeproject.com/KB/trace/debugtreatise.aspx但它的年龄相同。 CodeGuru还有另一篇关于自定义TraceListeners的文章:http://www.codeguru.com/columns/vb/article.php/c5611

我想不出最近的文章,希望这里的其他人会有一些东西