3

我遵循这篇使用 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()只有我选择记录到该文件而不是我的整个调试会话的我自己的文件的最简单方法是什么?

4

1 回答 1

5

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

跟踪发送到所有侦听器,侦听器本身可以进行过滤。

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

private static TraceSource mySource = new TraceSource("TraceSourceApp");
...
mySource.TraceEvent(TraceEventType.Error, 1, "Error message.");
于 2012-10-30T00:32:27.503 回答