我有一些 .Net WCF 服务,对于这些服务,我已配置 app.config 文件以将发送和接收的消息记录在 .svclog 文件中,该文件可由“服务跟踪查看器工具”(SvcTraceViewer.exe) 读取。这个工具很好地呈现日志文件,清楚地显示正在处理的 SOAP 消息。
我必须使用 System.Diagnostics.XmlWriterTraceListener 侦听器来正确格式化 .svclog 文件以供服务跟踪查看器工具处理。
我遇到的问题是 .svclog 文件变得太大,并且由于响应时间慢,服务跟踪查看器工具变得无法使用。
服务跟踪查看器工具确实提供了一种工具,允许在文件大小 > 40MB 时打开部分日志文件,但这仍然太慢。app.config 文件中似乎没有工具可以将 .svclog 配置为每天或当文件达到特定大小时自动创建一个新文件。
有一个名为 Microsoft.VisualBasic.Logging.FileLogTraceListener 的文本日志侦听器,它支持 logfilecreationschedule="Daily" 属性,该属性每天滚动日志文件,但是从该侦听器生成的日志文件很难让操作支持人员用作日志条目没有很好地呈现,并且大型 xml 文档造成了混乱。
这方面的最佳实践是什么,看起来我可能不得不编写一个自定义 WCF 日志扩展,这似乎有点矫枉过正,只是为了处理内置 System.Diagnostics.XmlWriterTraceListener 日志侦听器中缺少日志文件滚动功能/附加器。
我还尝试了一个脚本来停止我的应用程序并重命名日志文件,但这似乎不可能,因为在 Windows 上,handle.exe 和 openfile 实用程序无法关闭通过网络共享打开的文件,因此我无法重命名/ 如果有人通过网络共享浏览旧日志文件,则移动它。不久将发布一个单独的问题。
谢谢,马特。