簡體   English   中英

記錄System.ServiceModel時的遠程服務跟蹤偵聽器

[英]Remote Service Trace Listener while logging System.ServiceModel

在我們的項目中,我們需要將客戶端日志記錄傳輸到服務器。 在服務器端,我們創建了一個WCF服務,該服務可以接收日志記錄行並將其轉儲到平面文件/ xml文件/數據庫中(不重要)。 在客戶端,我們創建了一個RemoteTraceListener(具有配置端點的屬性等)來調用該日志記錄服務。 我們使用帶有跟蹤源(TraceData,TraceEvent)的標准.Net跟蹤來創建日志記錄。

現在,一切順利,除非我們在客戶端將RemoteTraceListener連接到“ System.ServiceModel”跟蹤源以調查其他服務調用。 這顯然是非常錯誤的。

  • MalfunctioningServiceX的System.ServiceModel跟蹤源消息記錄到RemoteTraceListener。
  • RemoteTraceListener建立Wcf連接以將日志記錄行發送到日志記錄服務
  • RemoteTraceListener的System.ServiceModel跟蹤源消息記錄到RemoteTraceListener。
  • ...

之后,這些消息只會不斷泛濫。 請問有解決此遞歸的想法嗎?

徹底搜索后,可能的解決方案將自己分為三類:

  • 不要使用WCF傳輸日志記錄(使用使用另一種通信方法的日志記錄框架)
  • 首先在本地記錄日志,然后在傳輸日志文件時停止記錄,或使用其他方法傳輸日志文件。
  • 使用另一個可執行文件或另一個AppDomain將傳輸與應用程序分開

我們選擇遵循最后一種方法。 我們已經重寫了TraceListener以便在內部寫入隊列。 內部啟動第二個AppDomain,將日志出隊並傳輸到服務器。 這可以在半天之內完成。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM