Вам нужно иметь две вещи:
- правильная конфигурация для включения трассировки .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
- или вы можете использовать одно из множества готовых решений, например здесь (скачать код с Codeplex ).