我正在使用 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 日志时,我发现应用程序池在我的日志文件被删除的同时被重新整理。
最佳答案
Microsoft.ServiceModel.Samples.CircularTraceListener
代码示例读取 maxFileSizeKB
设置一次。为了使该设置的更改生效,您必须重新启动托管进程。
编辑:
当你编辑web.config时,IIS应用程序池默认会自动回收。
如果您的IIS应用程序池被回收,它将覆盖主文件(webserviceLog00.xml)。
您可以将“应用程序池 > 高级设置... > 回收 > 禁用配置更改回收”设置为 true,以防止应用程序池重新启动。
关于c# 循环traceListener不滚动文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46284384/