2012-05-28 74 views
9

我有一些.Net WCF服務,對於這些服務,我配置了app.config文件以便將可發送和接收的消息記錄到可讀的.svclog文件中通過「服務跟蹤查看器工具」(SvcTraceViewer.exe)。該工具可以很好地清晰地顯示正在處理的SOAP消息。.Net WCF服務跟蹤日誌和日誌文件管理(滾動)

我必須使用System.Diagnostics.XmlWriterTraceListener偵聽器來正確格式化可通過服務跟蹤查看器工具處理的.svclog文件。

我遇到的問題是.svclog文件變得太大&服務跟蹤查看器工具由於響應時間較慢而變得不可用。

服務跟蹤查看器工具確實提供了一種功能,可以在文件大小> 40MB時打開部分日誌文件,但這仍然太慢。在app.config文件中似乎沒有工具來配置.svclog,以便每天自動創建新文件或文件達到一定大小時。

有一個名爲Microsoft.VisualBasic.Logging.FileLogTraceListener的文本日誌偵聽器,它支持每日滾動日誌文件的logfilecreationschedule =「Daily」屬性,但是對於操作支持人員來說,此偵聽器生成的日誌文件很困難用作日誌條目不能很好地呈現,而大型xml文檔會造成混淆。

這方面的最佳做法是什麼?看起來好像我可能不得不編寫一個自定義的WCF日誌擴展,看起來像是矯枉過正,只是爲了解決內置System.Diagnostics中缺少日誌文件滾動功能的問題。 XmlWriterTraceListener日誌偵聽器/ appender。

我也嘗試過一個腳本來停止我的應用程序並重命名日誌文件,但這似乎不可能,因爲在Windows上,handle.exe和openfile實用程序無法關閉通過網絡共享打開的文件,所以我如果有人通過網絡共享瀏覽舊日誌文件,則無法重命名/移動舊日誌文件。很快就會發佈一個單獨的問題。

謝謝, 馬特。

+0

雖然它是可行的,但您不應該始終啓用WCF跟蹤。它被設計爲一種故障排除方法,並對性能有影響。在生產環境中禁用它是最佳做法。 –

回答

9

您可以開發自己或使用已有的專用XmlWriterTraceListener或使用循環跟蹤日誌機制。

有一個專門的實現執行滾動日誌在CodeProject跟蹤XmlWriterTraceListener的:

http://www.codeproject.com/Articles/30956/A-Rolling-XmlWriterTraceListener

隨着循環跟蹤,你有兩個文件,可每家商店了總的期望跟蹤日誌數據的一半。監聽器創建一個文件並寫入該文件,直到達到數據大小一半的限制,然後切換到第二個文件。當監聽者達到第二個文件的限制時 - 它會用新的跟蹤覆蓋第一個文件。

http://msdn.microsoft.com/en-us/library/aa395205.aspx

+0

謝謝Sergio,你真的知道你的WCF或你的網絡搜索能力遠超我的。要麼可能,非常感謝。兩種解決方案都是可行的。不知道我會去哪。我可以嘗試兩種。 – MattG