<system.serviceModel>
<diagnostics>
<messageLogging logEntireMessage="true" logMalformedMessages="true"
logMessagesAtServiceLevel="true" logMessagesAtTransportLevel="true" maxMessagesToLog="10" />
<endToEndTracing messageFlowTracing="false" />
</diagnostics>
</system.serviceModel>
System.ServiceModel里面需要配置以上信息,才能够记录日志(不配置的话,不会记录WCF消息)
以上配置完了,需要进行以下配置:
<system.diagnostics>
<sources>
<source name="System.ServiceModel.MessageLogging" >
<listeners>
<add name="traceListener"
type="System.Diagnostics.XmlWriterTraceListener"
initializeData= "c:\Traces.svclog" traceOutputOptions="DateTime" >
<filter type="" />
</add>
</listeners>
</source>
</sources>
<trace autoflush="true" />
</system.diagnostics>
配置好Source和Listeners就可以记录WCF消息了。
上面的listener是系统自带的,也可以自定义,通过继承TraceListener,重写Write和WriteLine抽象方法。
配置如下
<system.diagnostics>
<sources>
<source name="System.ServiceModel.MessageLogging" >
<listeners>
<add name="traceListener"
type="MyNameSpace.MyListener,MyNameSpace"> 格式【类型,程序集名称】
<filter type="" />
</add>
</listeners>
</source>
</sources>
<trace autoflush="true" />
</system.diagnostics>
还可以将listener放到外面来,作为共享listener,定义多个source来使用,通过listener的name
<system.diagnostics>
<sources>
<source name="System.ServiceModel.MessageLogging" >
<listeners>
<add name="traceListener">
<filter type=""/> 可以删除
</add>
</listeners>
</source>
<source name="System.Runtime.Serialization">
<listeners>
<add name="traceListener" /></span>
</listeners>
</source>
</sources>
<sharedListeners>
<add name="traceListener" type="MyNameSpace.MyListener,MyNameSpace">
<filter type="" /> 可以删除
</add>
</sharedListeners>
<trace autoflush="true" />
</system.diagnostics>
还可以参考MSDN配置跟踪