TraceSource - 在没有配置文件的情况下将autoflush设置为true?

时间:2014-06-11 21:27:25

标签: c# .net

我没有看到TraceSource上的autoflush选项,就像Trace一样 有没有办法自动刷新而不必在每次写入后手动刷新?

BTW我正在使用TextWriterTraceListener作为我的跟踪源侦听器而不使用config xml。

3 个答案:

答案 0 :(得分:5)

内部TraceSource使用AutoFlush类的Trace设置。例如。 TraceSource.TraceEvent方法的sources

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中声明了相同的BTW:

  

跟踪侦听器使用Trace类属性的值   缩进,IndentSize和AutoFlush以格式化跟踪输出。

答案 1 :(得分:0)

请试试这个!

TextWriterTraceListener listener = new TextWriterTraceListener(@"C:\MyFolder\Temp.log");
StreamWriter sw = listener.Writer as StreamWriter;
if (sw != null) sw.AutoFlush = true;

答案 2 :(得分:0)

StreamWriter sw = File.AppendText(path);

traceSource.Listeners.Add(new TextWriterTraceListener(sw) { TraceOutputOptions = TraceOptions.DateTime });