【问题标题】:c# Circular traceListener not rolling filesc#循环traceListener不滚动文件
【发布时间】:2018-02-27 06:59:26
【问题描述】:

我正在使用 Microsoft.ServiceModel.Samples.CircularTracecListener 二进制文件在 Web 服务上实现错误日志记录。

它应该写入文件直到达到 maxFileSizeKB,然后滚动到辅助文件。 当我用低文件大小限制测试它并且在短时间内发生滚动时,这个过程运行良好。

奇怪的是,当我设置 maxFileSizeKB 时,第二天我发现记录器覆盖了主文件,而次要文件没有被触及。

web.config文件设置如下:

  <system.diagnostics>
<sources>
  <source name="System.ServiceModel" switchValue="Information,ActivityTracing" >
    <listeners>
      <add name="CircularTraceListener" />
    </listeners>
  </source>
</sources>
<sharedListeners>
  <add name="CircularTraceListener" type="Microsoft.Samples.ServiceModel.CircularTraceListener,CircularTraceListener"
       initializeData="c:\log\webserviceLog.xml" maxFileSizeKB="5120" />
</sharedListeners>
<trace autoflush="true" />

有人遇到过类似的问题吗?

我只能想到重新启动网络服务并使其从第一个文件开始。

可能是应用程序池回收?

当我检查 iis 日志时,我发现应用程序池在我的日志文件被擦除的同时被回收。

【问题讨论】:

    标签: c# tracelistener


    【解决方案1】:

    Microsoft.ServiceModel.Samples.CircularTraceListener 代码示例读取一次maxFileSizeKB 设置。为了使对该设置的更改生效,您必须重新启动托管进程。

    编辑:

    编辑 web.config 时,IIS 应用程序池默认会自动回收。

    如果你的 IIS 应用程序池被回收,它会覆盖主文件(webserviceLog00.xml)。

    您可以将“应用程序池>高级设置...>回收>禁用配置更改回收”设置为true,以防止应用程序池重新启动。

    【讨论】:

    • 我检查了 maxFileSizeKB 中的更改正在更新到服务而不重新启动它。
    • 是的,如果你的IIS应用程序池被回收,它会覆盖主文件(webserviceLog00.xml)。当您编辑 web.config 时,默认情况下 IIS 应用程序将自动被回收。您可以通过将“应用程序池 > 高级设置... > 回收 > 禁用回收配置更改”设置为 true 来更改它。
    猜你喜欢
    • 1970-01-01
    • 2018-05-19
    • 2014-12-04
    • 2016-01-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-13
    相关资源
    最近更新 更多