我正在尝试诊断在相对简单的服务主机进程(Service.exe)中自托管的WCF服务.
我配置了Service.exe.config:
<?xml version="1.0" ?>
<configuration>
<system.diagnostics>
<sources>
<source name="System.ServiceModel"
switchValue="All"
propagateActivity="true">
<listeners>
<add name="traceListener"
type="System.Diagnostics.XmlWriterTraceListener"
initializeData= "c:\temp\Service.svclog" />
</listeners>
</source>
</sources>
</system.diagnostics>
<system.serviceModel>
<diagnostics>
<messageLogging maxMessagesToLog="1"
maxSizeOfMessageToLog="2147483647"
logEntireMessage="true"
logMessagesAtServiceLevel="true"
logMalformedMessages="true"
logMessagesAtTransportLevel="true">
</messageLogging>
</diagnostics>
</system.serviceModel>
<startup>
<supportedRuntime version="v4.0"
sku=".NETFramework,Version=v4.0" />
</startup>
</configuration>
Run Code Online (Sandbox Code Playgroud)
当我查看生成的svclog文件时,我看到记录了许多跟踪事件(我只希望记录第一条消息),并且所跟踪的消息都没有显示消息体(仅标题).
我相信我必须在这里遗漏一些简单的东西,但我看不到它.
更新:当我查看WCF配置编辑器时,"诊断"下有两个部分:MessageLogging和Tracing.当我单击"EnableMessageLogging"链接时,我的配置文件会更新:
<system.diagnostics>
<sources>
<source propagateActivity="true" name="System.ServiceModel" switchValue="All">
<listeners>
<add type="System.Diagnostics.DefaultTraceListener" name="Default">
<filter type="" />
</add>
<add initializeData="c:\temp\MessageBodyTracing.svclog" type="System.Diagnostics.XmlWriterTraceListener"
name="traceListener">
<filter type="" />
</add>
</listeners>
</source>
<source name="System.ServiceModel.MessageLogging" switchValue="Warning, ActivityTracing">
<listeners>
<add type="System.Diagnostics.DefaultTraceListener" name="Default">
<filter type="" /> …Run Code Online (Sandbox Code Playgroud)