如何阻止TextWriterTrackListener使用app.config进行追加

本文关键字:追加 config app 何阻止 TextWriterTrackListener 使用 | 更新日期: 2023-09-27 18:23:48

我使用System.Diagnostics.TraceSource进行日志记录,其中一个侦听器是TextWriterTrackListener。在这里的跟踪引物中,它设置如下:

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

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

从程序上讲,我想要的听众是:

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

如何阻止TextWriterTrackListener使用app.config进行追加

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

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

一些示例代码:

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

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

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

更简单的是,只需告诉TestWriterTrackListener不要附加文件:

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

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