5

我正在使用 System.Diagnostics.TraceSource 进行日志记录,我的一个听众是 TextWriterTraceListener。在此处的跟踪入门中,它设置如下:

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

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

以编程方式,我想要的侦听器是:

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

3 回答 3

2

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

于 2012-02-07T05:30:19.493 回答
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从配置文件中获取参数来指定文件的名称,或者指定一个(如果在代码中创建)。

于 2014-03-06T20:18:36.257 回答
0

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

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

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

于 2014-10-23T08:56:02.877 回答