c#循环traceListener不滚动文件

时间:2017-09-18 16:44:01

标签: c# tracelistener

我正在使用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" />

有人遇到类似问题吗?

我只能想到重新启动webservice并使其从第一个文件开始的事情。

可能是应用程序池回收?

当我检查iis日志时,我看到应用程序池在我的日志文件被删除的同时被记录。

1 个答案:

答案 0 :(得分:2)

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

修改:

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

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

您可以设置&#34;应用程序池&gt;高级设置...&gt;回收&gt;禁用回收以进行配置更改&#34;为true以防止应用程序池重新启动。