【问题标题】:What does the autoflush attribute in trace element do微量元素中的 autoflush 属性有什么作用
【发布时间】:2017-09-10 22:04:30
【问题描述】:

我的 web.config 文件中有以下代码:

<system.diagnostics>
    <trace autoflush="false" indentsize="4">
      <listeners>
        <add name="myListener" type="System.Diagnostics.TextWriterTraceListener" initializeData="TextWriterOutput.log" />
        <remove name="Default" />
      </listeners>
    </trace>
  </system.diagnostics>

在我的代码后面的某处:

System.Diagnostics.Trace.WriteLine("From the trace");

运行应用程序后,TextWriterOutput.log 文件创建成功,但为空白。但是,在将 autoflush 属性更改为 true 后,跟踪写入 TextWriterOutput.log。

我还注意到我可以使用

使跟踪写入 TextWriteOutput.log

System.Diagnostics.Trace.Flush();

而不是将autoflush属性修改为true。

我在 https://msdn.microsoft.com/en-us/library/system.diagnostics.trace.flush(v=vs.110).aspx 但这对我来说没有意义。为什么跟踪不能立即写入输出文件?谁能用简单的话解释为什么?

【问题讨论】:

    标签: c# asp.net asp.net-mvc trace


    【解决方案1】:

    Flush 方法强制将输出写入文件。将 autoflush 属性设置为 true 会导致 Trace 始终立即写入文件,而不是被缓冲。

    【讨论】:

    • 对我来说仍然没有意义。为什么要缓冲?为什么不立即将其发送给听众?
    • @Bill 文件 I/O 开销很大;通常,您不想将许多小数据块写入文件,而是将少量大数据块写入文件。所以数据被缓冲,直到有足够的数据使写入更有效率。缺点是您的日志文件不会立即包含写入跟踪的数据,因此 Flush 方法和 autoflush 属性允许您覆盖该行为。
    • 如果暂时使用 Trace,我觉得将其设置为 True 很有用。
    猜你喜欢
    • 2010-11-29
    • 1970-01-01
    • 2016-12-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-15
    • 2018-12-07
    • 2018-05-16
    相关资源
    最近更新 更多