如何使用app.config阻止TextWriterTraceListener附加?

时间:2012-02-07 05:21:44

标签: c# logging app-config tracesource

我正在使用System.Diagnostics.TraceSource进行日志记录,我的一个侦听器是TextWriterTraceListener。在跟踪引物here中,它按如下方式设置:

<listeners>
  <add initializeData="output.txt" 
       type="System.Diagnostics.TextWriterTraceListener"
       name="myLocalListener" />
</listeners>

问题是这将始终附加到output.txt。如何在配置文件中将其更改为覆盖?

以编程方式我想要的听众是:

new TextWriterTraceListener(new StreamWriter("output.txt", false));

3 个答案:

答案 0 :(得分:2)

最简单的解决方案是制作自己的。

我建议您继承TextWriterTraceListener并在构造函数中将基础Writer设置为您建议的内容:new StreamWriter("output.txt", false)

一些示例代码:

public class MyTextWriterTraceListener : TextWriterTraceListener
{
    public MyTextWriterTraceListener(string logFileName)
        : base(logFileName)
    {
        base.Writer = new StreamWriter(logFileName, false);
    }
}

这使您可以从配置文件中获取initializeData参数来指定文件的名称,或者如果在代码中创建,则指定一个。

答案 1 :(得分:1)

我知道这不会直接回答您的问题,而是使用NLog代替。它在记录选项方面比开箱即用的诊断功能更多,而且非常易于使用。

答案 2 :(得分:0)

更简单,只需告诉TestWriterTraceListener不附加文件:

TextWriterTraceListener twtl = new TextWriterTraceListener(new StreamWriter(@"<path to my logfile>", false));

通过选择false,每次初始化TextWriterTraceListener时都会覆盖日志文件。