8

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

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

4

1 回答 1

14

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 框架

日志级别以及其他选项在日志级别和选项部分进行了讨论。

源的switchValue属性只对追踪有效。如果您为跟踪源指定 switchValue 属性,System.ServiceModel.MessageLogging如下所示,它没有效果。

复制

 <source name="System.ServiceModel.MessageLogging" switchValue="Verbose">

如果要禁用跟踪源,则应使用 messageLogging 元素的logMessagesAtServiceLevellogMalformedMessageslogMessagesAtTransportLevel属性。您应该将所有这些属性设置为 false。这可以通过使用前面代码示例中的配置文件、通过配置编辑器 UI 界面或使用 WMI 来完成。有关配置编辑器工具的详细信息,请参阅配置编辑器工具 (SvcConfigEditor.exe)。有关 WMI 的详细信息,请参阅使用 Windows Management Instrumentation 进行诊断。

于 2012-11-16T22:11:41.013 回答