TraceSource -在没有配置文件的情况下将自动刷新设置为true

本文关键字:刷新 设置 true 情况下 配置文件 TraceSource | 更新日期: 2023-09-27 18:08:08

我在TraceSource上没有看到像Trace那样的自动刷新选项。
是否有一种方法可以自动刷新,而不必在每次写入后手动刷新?

顺便说一句,我使用TextWriterTraceListener作为我的跟踪源侦听器,而不是使用配置xml。

TraceSource -在没有配置文件的情况下将自动刷新设置为true

TraceSource内部使用Trace类的AutoFlush设置。例如TraceSource.TraceEvent来源法:

for (int j = 0; j < this.listeners.Count; j++)
{
    TraceListener listener = this.listeners[j];
    listener.TraceEvent(eventCache, this.Name, eventType, id, format, args);
    if (Trace.AutoFlush)
    {
        listener.Flush();
    }
}

因此,您需要做的就是将Trace.AutoFlush设置为true。顺便说一句,MSDN:

中也说明了这一点。

跟踪侦听器使用trace类属性的值缩进、缩进大小和自动刷新以格式化跟踪输出。

请尝试一下!

TextWriterTraceListener listener = new TextWriterTraceListener(@"C:'MyFolder'Temp.log");
StreamWriter sw = listener.Writer as StreamWriter;
if (sw != null) sw.AutoFlush = true;
StreamWriter sw = File.AppendText(path);
traceSource.Listeners.Add(new TextWriterTraceListener(sw) { TraceOutputOptions = TraceOptions.DateTime });