使用跟踪侦听器重定向所有调试输出

时间:2012-10-30 00:28:05

标签: c# winforms app-config tracelistener

我遵循了这篇Create a Logger using the Trace Listener in C#文章,认为只会在Trace.WriteLine()文件中写入application.log语句:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <system.diagnostics>
    <trace autoflush="true" indentsize="4">
      <listeners>
        <add name="myListener" type="System.Diagnostics.TextWriterTraceListener" initializeData="application.log" />
        <remove name="Default" />
      </listeners>
    </trace>
  </system.diagnostics>
</configuration>

但令我沮丧的是,我过去Debug.WriteLine()标签的所有Output都从该标签中消失了,而现在他们都转到跟踪文件application.log

有没有办法将 Trace.WriteLine()语句指向application.log

如果没有,WriteLine()到我自己的文件的最简单方法是什么,我只选择登录到该文件,而不是整个调试会话?

1 个答案:

答案 0 :(得分:5)

<remove name="Default" />时不确定您的期望但是从配置中删除该行会让您在“输出”选项卡中返回输出。您可以看到DefaultTraceListener使用OutputDebugString方法,该方法允许VS在“输出”选项卡中显示日志。

Traces发送给所有侦听器,侦听器本身可以进行过滤。

如果您想对痕迹进行更多分类 - 请参阅TraceSource中System.Diagnostic命名空间中的其他类,其中包含How to - Trace Source中的示例:

private static TraceSource mySource = new TraceSource("TraceSourceApp");
...
mySource.TraceEvent(TraceEventType.Error, 1, "Error message.");