如何理解LogSource的AutoFlush属性

时间:2012-03-20 07:38:00

标签: c# .net enterprise-library

我有一个类别“MyCategory”,其AutoFlush属性为true,Trace Listener为Flat File Trace Listener。我创建一个LogEntry并用类别编写它。日志将成功写入文件。

如果我将AutoFlush属性更改为false并写入LogEntry,我无法理解为什么它没有被LogSource写入文件。 (当AutoFlush = false时)

1 个答案:

答案 0 :(得分:4)

在流中,Flush()强制流清除缓冲区到底层对象。例如一份文件!因此,在每个LogEntry之后,您的记录器将自动刷新,因此您可以立即在文件中查看结果。

在以下情况下,流将清除缓冲区:

  • 缓冲区已满
  • 流正在处理
  • ...

<强>增加:

LogSource保留一个LogEntries列表,其容量为 x 。如果LogEntries列表&gt; x =&gt;写入文件。这是AutoFlush = false的缓冲。它只会在缓冲区已满时写入,调用Flush或LogSource dispose。

每次插入LogEntry后,

AutoFlush = true;都会调用Flush()来强制写入文件。没有缓冲,如果你想这样称呼它。这意味着,您将立即看到每个条目,而不是在 x 条目之后。