如何将 WCF 跟踪设置为仅记录警告、错误和致命错误?
How to set WCF Tracing to long only Warnings, Erros and Fatals?
我正在尝试在生产环境中的 WCF 服务器中设置跟踪,因此它只记录 "issues"。不是信息。我查看了 Microsoft 文档,here,但它对我不起作用。
有部署或调试的推荐设置
我试过了,看起来很管用。我正在记录每条消息(我认为)。
还有生产环境的推荐设置,此处:
<configuration>
<system.diagnostics>
<sources>
<source name="System.ServiceModel"
switchValue="Warning"
propagateActivity="true" >
<listeners>
<add name="xml"/>
</listeners>
</source>
<source name="myUserTraceSource"
switchValue="Warning, ActivityTracing">
<listeners>
<add name="xml"/>
</listeners>
</source>
</sources>
<sharedListeners>
<add name="xml"
type="System.Diagnostics.XmlWriterTraceListener"
initializeData="C:\logs\Traces.svclog" />
</sharedListeners>
</system.diagnostics>
<system.serviceModel>
<diagnostics wmiProviderEnabled="true">
</diagnostics>
</system.serviceModel>
</configuration>
我将它粘贴到我的配置文件中,然后..我认为有错字。他们写道:
switchValue="Warning"
(不创建日志)
所以我改成了:switchValue="Warning, ActivityTracing"
现在我得到了日志,但是......我得到了与调试版本相同的结果。 为什么?
我正在尝试:
1)
<diagnostics>
<messageLogging
logEntireMessage="false"
logMalformedMessages="false"
logMessagesAtServiceLevel="false"
logMessagesAtTransportLevel="false"
maxMessagesToLog="5" />
</diagnostics>
2)
<sources>
<source name="System.ServiceModel"
switchValue="Off, ActivityTracing"
propagateActivity="true" >
<listeners>
<add name="xml"/>
</listeners>
</source>
<source name="myUserTraceSource"
switchValue="Off, ActivityTracing">
<listeners>
<add name="xml"/>
</listeners>
</source>
</sources>
</sources>
3)
<system.diagnostics>
<sources>
<source name="System.ServiceModel"
switchValue="Off, ActivityTracing"
propagateActivity="true" >
<listeners>
<add name="TraceLog"/>
</listeners>
</source>
<source name="System.ServiceModel.MessageLogging"
switchValue="Off, ActivityTracing"
propagateActivity="true">
<listeners>
<add name="xml"/>
</listeners>
</source>
<source name="myUserTraceSource"
switchValue="Off, ActivityTracing">
<listeners>
<add name="TraceLog"/>
</listeners>
</source>
</sources>
<sharedListeners>
<add name="TraceLog"
type="System.Diagnostics.XmlWriterTraceListener"
initializeData="C:\logs\Traces.svclog" />
</sharedListeners>
</system.diagnostics>
没成功://
WCF 跟踪建立在 System.Diagnostics 之上,每个 WCF 程序集都会发出不同的跟踪消息。 System.ServiceModel 是最常见的 WCF 跟踪源,它为大多数 WCF 活动发出跟踪。发出的信息级别由配置文件中的 switchValue 属性控制。
您看到 start/stop/transfer 跟踪消息也是因为 ActivityTracing 跟踪级别添加到 switchValue。如果您只留下警告,它应该可以正常工作。
有时,当服务的主机为 运行 时,生成的 svclog 文件可能看起来是空的(例如,如果托管在 IISExpress 下)。停止该站点,您将看到仅为警告及以上生成的消息。
例如,下面的诊断配置只捕获了 ArgumentNullException
<system.diagnostics>
<sources>
<source propagateActivity="false" name="System.ServiceModel"
switchValue="Warning">
<listeners>
<add type="System.Diagnostics.DefaultTraceListener" name="Default">
<filter type="" />
</add>
<add name="ServiceModelTraceListener">
<filter type="" />
</add>
</listeners>
</source>
</sources>
<sharedListeners>
<add initializeData="traces.svclog" type="System.Diagnostics.XmlWriterTraceListener, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
name="ServiceModelTraceListener" traceOutputOptions="None">
<filter type="" />
</add>
</sharedListeners>
</system.diagnostics>
Configuring Tracing 来自 MS 的文档列出了可用于跟踪源的不同跟踪级别。
我正在尝试在生产环境中的 WCF 服务器中设置跟踪,因此它只记录 "issues"。不是信息。我查看了 Microsoft 文档,here,但它对我不起作用。
有部署或调试的推荐设置
我试过了,看起来很管用。我正在记录每条消息(我认为)。
还有生产环境的推荐设置,此处:
<configuration>
<system.diagnostics>
<sources>
<source name="System.ServiceModel"
switchValue="Warning"
propagateActivity="true" >
<listeners>
<add name="xml"/>
</listeners>
</source>
<source name="myUserTraceSource"
switchValue="Warning, ActivityTracing">
<listeners>
<add name="xml"/>
</listeners>
</source>
</sources>
<sharedListeners>
<add name="xml"
type="System.Diagnostics.XmlWriterTraceListener"
initializeData="C:\logs\Traces.svclog" />
</sharedListeners>
</system.diagnostics>
<system.serviceModel>
<diagnostics wmiProviderEnabled="true">
</diagnostics>
</system.serviceModel>
</configuration>
我将它粘贴到我的配置文件中,然后..我认为有错字。他们写道:
switchValue="Warning"
(不创建日志)
所以我改成了:switchValue="Warning, ActivityTracing"
现在我得到了日志,但是......我得到了与调试版本相同的结果。 为什么?
我正在尝试:
1)
<diagnostics>
<messageLogging
logEntireMessage="false"
logMalformedMessages="false"
logMessagesAtServiceLevel="false"
logMessagesAtTransportLevel="false"
maxMessagesToLog="5" />
</diagnostics>
2)
<sources>
<source name="System.ServiceModel"
switchValue="Off, ActivityTracing"
propagateActivity="true" >
<listeners>
<add name="xml"/>
</listeners>
</source>
<source name="myUserTraceSource"
switchValue="Off, ActivityTracing">
<listeners>
<add name="xml"/>
</listeners>
</source>
</sources>
</sources>
3)
<system.diagnostics>
<sources>
<source name="System.ServiceModel"
switchValue="Off, ActivityTracing"
propagateActivity="true" >
<listeners>
<add name="TraceLog"/>
</listeners>
</source>
<source name="System.ServiceModel.MessageLogging"
switchValue="Off, ActivityTracing"
propagateActivity="true">
<listeners>
<add name="xml"/>
</listeners>
</source>
<source name="myUserTraceSource"
switchValue="Off, ActivityTracing">
<listeners>
<add name="TraceLog"/>
</listeners>
</source>
</sources>
<sharedListeners>
<add name="TraceLog"
type="System.Diagnostics.XmlWriterTraceListener"
initializeData="C:\logs\Traces.svclog" />
</sharedListeners>
</system.diagnostics>
没成功://
WCF 跟踪建立在 System.Diagnostics 之上,每个 WCF 程序集都会发出不同的跟踪消息。 System.ServiceModel 是最常见的 WCF 跟踪源,它为大多数 WCF 活动发出跟踪。发出的信息级别由配置文件中的 switchValue 属性控制。
您看到 start/stop/transfer 跟踪消息也是因为 ActivityTracing 跟踪级别添加到 switchValue。如果您只留下警告,它应该可以正常工作。
有时,当服务的主机为 运行 时,生成的 svclog 文件可能看起来是空的(例如,如果托管在 IISExpress 下)。停止该站点,您将看到仅为警告及以上生成的消息。
例如,下面的诊断配置只捕获了 ArgumentNullException
<system.diagnostics>
<sources>
<source propagateActivity="false" name="System.ServiceModel"
switchValue="Warning">
<listeners>
<add type="System.Diagnostics.DefaultTraceListener" name="Default">
<filter type="" />
</add>
<add name="ServiceModelTraceListener">
<filter type="" />
</add>
</listeners>
</source>
</sources>
<sharedListeners>
<add initializeData="traces.svclog" type="System.Diagnostics.XmlWriterTraceListener, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
name="ServiceModelTraceListener" traceOutputOptions="None">
<filter type="" />
</add>
</sharedListeners>
</system.diagnostics>
Configuring Tracing 来自 MS 的文档列出了可用于跟踪源的不同跟踪级别。