我有一些 .Net WCF 服务,对于这些服务,我已经配置了 app.config 文件来记录发送和接收的消息到一个 .svclog 文件中,该文件可以使用 "Service Trace Viewer Tool"(SvcTraceViewer.exe) 进行阅读。该工具可以清晰地显示正在处理的 SOAP 消息,需要使用 System.Diagnostics.XmlWriterTraceListener 监听器才能正确格式化 .svclog 文件以使其可被 Service Trace Viewer Tool 处理。
我的问题是 .svclog 文件变得太大,导致 Service Trace Viewer Tool 反应缓慢而无法使用。虽然 Service Trace Viewer Tool 提供了一个功能可以打开日志文件中的一部分(若文件大小 > 40MB),但这仍然太慢了。似乎在 app.config 文件中没有配置 .svclog 自动创建新文件的功能,无论是每天还是达到一定大小时。
Microsoft.VisualBasic.Logging.FileLogTraceListener 是一个文本日志侦听程序,它支持 logfilecreationschedule="Daily" 属性,可每天滚动日志文件,但此侦听程序生成的日志文件不易于操作支持人员使用,因为日志条目未呈现良好,大型 XML 文档增加了混乱。
在这方面,最佳实践是什么?看起来我可能需要编写自定义 WCF 日志扩展程序来处理内置的 System.Diagnostics.XmlWriterTraceListener 日志侦听程序/附加程序中缺乏日志文件滚动功能的问题,但这似乎有点过度解决。
我还尝试了一个脚本来停止我的应用程序并重命名日志文件,但这似乎不可能,因为在 Windows 上,handle.exe 和 openfile 实用程序无法关闭通过网络共享打开的文件,因此如果有人正在浏览它,则无法重命名/移动旧日志文件。不久将会发布有关此问题的单独问题。
谢谢, Matt。