在打开 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>
然而仍然有跟踪输出被发送到指定的输出文件。这是为什么?我错过了什么?
最佳答案
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。这可以通过使用前面代码示例中的配置文件、通过配置编辑器 UI 界面或使用 WMI 来完成。有关配置编辑器工具的详细信息,请参阅配置编辑器工具 (SvcConfigEditor.exe)。有关 WMI 的详细信息,请参阅使用 Windows Management Instrumentation 进行诊断。
关于WCF 跟踪开关值已关闭,但仍有跟踪输出正在生成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13411221/