2009-12-17 9 views
8

我希望能夠在數據庫中記錄消息信息,並且我正在嘗試確定如何最好地執行此操作。有可能配置WCF日誌機制寫入數據庫而不是文件?謝謝。如何啓用WCF日誌記錄以便將其寫入數據庫?

+1

博客[配置WCF服務以利用企業庫:記錄應用程序以將數據記錄到數據庫](http://weblogs.asp.net/sukumarraju/archive/2011/11/07/configuring-wcf-service-to-利用企業庫日誌記錄應用程序到日誌數據到數據庫.aspx)有分步說明,如何配置'數據庫跟蹤監聽器' – 2012-09-26 12:32:41

回答

8

你需要有兩件事情:

  • 適當配置,以使.NET跟蹤
  • 跟蹤偵聽器來捕獲跟蹤消息,並將其存儲在數據庫中

#1
您需要打開先在WCF跟蹤 - 你<system.serviceModel>需要一個條目啓用跟蹤:

<system.serviceModel> 
    <diagnostics> 
     <messageLogging 
      logEntireMessage="true" 
      logMalformedMessages="false" 
      logMessagesAtServiceLevel="true" 
      logMessagesAtTransportLevel="false" 
      maxMessagesToLog="300000" 
      maxSizeOfMessageToLog="200000"/> 
    </diagnostics> 
</system.serviceModel> 

接下來,你需要配置.NET跟蹤這樣:

<system.diagnostics> 
    <sources> 
     <source name="System.ServiceModel" 
       switchValue="Information, ActivityTracing" 
       propagateActivity="true"> 
     <listeners> 
      <add name="xml" /> 
     </listeners> 
     </source> 
     <source name="System.ServiceModel.MessageLogging"> 
     <listeners> 
      <add name="xml" /> 
     </listeners> 
     </source> 
    </sources> 
    <sharedListeners> 
     <add name="xml" type="WcfTrace.Trace.WebTraceListener,WcfTrace.Trace" /> 
    </sharedListeners> 
</system.diagnostics> 

在這裏,而不是WebTraceListener或其他預定義的偵聽器,您還可以插入自己的面向數據庫的跟蹤偵聽器。

#2:
你可以 - 當然 - 寫自己的SqlTraceListener - 或者你可以使用很多現成的解決方案之一,在那裏,例如this one here(從Codeplex下載代碼)。

0

如果你不需要整個SOAP消息,我會建議使用log4net自定義IParameterInspector或IDispatchMessageInspector實現,因爲在這種情況下,你可以寫入只記錄你所需要的。 否則,採取marc_s的解決方案。

相關問題