我有一个类别“MyCategory”,其AutoFlush属性为true,Trace Listener为Flat File Trace Listener。我创建一个LogEntry并用类别编写它。日志将成功写入文件。
如果我将AutoFlush属性更改为false并写入LogEntry,我无法理解为什么它没有被LogSource写入文件。 (当AutoFlush = false时)
答案 0 :(得分:4)
在流中,Flush()强制流清除缓冲区到底层对象。例如一份文件!因此,在每个LogEntry之后,您的记录器将自动刷新,因此您可以立即在文件中查看结果。
在以下情况下,流将清除缓冲区:
<强>增加:强>
LogSource保留一个LogEntries列表,其容量为 x 。如果LogEntries列表&gt; x =&gt;写入文件。这是AutoFlush = false
的缓冲。它只会在缓冲区已满时写入,调用Flush或LogSource dispose。
AutoFlush = true;
都会调用Flush()
来强制写入文件。没有缓冲,如果你想这样称呼它。这意味着,您将立即看到每个条目,而不是在 x 条目之后。