在打开WCF跟踪以帮助查找问题之后,我现在希望关闭跟踪。所以我已将配置文件更改为此...
<system.diagnostics>
<sources>
<source name="System.ServiceModel" switchValue="Off" >
<!-- Information,ActivityTracing-->
<listeners>
<add name="xmlTraceListener" />
</listeners>
</source>
<source name="System.ServiceModel.MessageLogging" switchValue="Off" >
<listeners>
<add name="xmlTraceListener" />
</listeners>
</source>
</sources>
<sharedListeners>
<add name="xmlTraceListener"
type="System.Diagnostics.XmlWriterTraceListener"
initializeData="C:\WCFLogs\DataPortalTrace.svclog" />
</sharedListeners>
<trace autoflush="true" />
</system.diagnostics>
然而,仍有痕迹输出被发送到指示的输出文件。这是为什么?我错过了什么?
答案 0 :(得分:13)
switchValue="Off"
只会控制System.ServiceModel
。它无法控制System.ServiceModel.MessageLogging
据我所知,您可以通过maxMessagesToLog="0"
进行控制 - <diagnostics>
<system.serviceModel>
个标记
<diagnostics>
<messageLogging
logEntireMessage="true"
logMalformedMessages="true"
logMessagesAtServiceLevel="true"
logMessagesAtTransportLevel="true"
maxMessagesToLog="0"
/>
</diagnostics>
.NET framework for Configuring Message Logging
日志级别和选项部分讨论了日志记录级别以及其他选项。
源的switchValue
属性仅对跟踪有效。如果为System.ServiceModel.MessageLogging
跟踪源指定switchValue属性,如下所示,则无效。
复制
<source name="System.ServiceModel.MessageLogging" switchValue="Verbose">
如果要禁用跟踪源,则应使用messageLogging元素的logMessagesAtServiceLevel
,logMalformedMessages
和logMessagesAtTransportLevel
属性。您应该将所有这些属性设置为false。这可以通过使用上一代码示例中的配置文件,Configuration Editor UI界面或使用WMI来完成。有关配置编辑器工具的详细信息,请参阅配置编辑器工具(SvcConfigEditor.exe)。有关WMI的详细信息,请参阅使用Windows Management Instrumentation进行诊断。