我正在使用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日志时,我看到应用程序池在我的日志文件被删除的同时被记录。
答案 0 :(得分:2)
Microsoft.ServiceModel.Samples.CircularTraceListener
代码示例一次读取maxFileSizeKB
设置。要使对该设置的更改生效,您必须重新启动托管过程。
修改:
编辑web.config时,IIS应用程序池默认会自动回收。
如果您的IIS应用程序池被回收,它将覆盖主文件(webserviceLog00.xml)。
您可以设置&#34;应用程序池&gt;高级设置...&gt;回收&gt;禁用回收以进行配置更改&#34;为true以防止应用程序池重新启动。