解决方法
你需要有两件事:
>正确的配置以启用.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下载代码).