WCF跟踪switchvalue已关闭,但仍会生成跟踪输出

时间:2012-11-16 05:50:32

标签: wcf tracing

在打开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>

然而,仍有痕迹输出被发送到指示的输出文件。这是为什么?我错过了什么?

1 个答案:

答案 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元素的logMessagesAtServiceLevellogMalformedMessageslogMessagesAtTransportLevel属性。您应该将所有这些属性设置为false。这可以通过使用上一代码示例中的配置文件,Configuration Editor UI界面或使用WMI来完成。有关配置编辑器工具的详细信息,请参阅配置编辑器工具(SvcConfigEditor.exe)。有关WMI的详细信息,请参阅使用Windows Management Instrumentation进行诊断。