我有一个WCF服务,目前正在生产中。代码性能不是我们希望它们的位置,我们无法在Staging环境中重现。
我想知道是否可以记录对服务和服务进行的每个方法调用。基本上我想要一个所有调用和时间戳的顺序列表(我们的代码不是多线程的)。
有没有办法实现这一点,而无需检测二进制文件。我们可以在web.config中的system.diagnostic节点下进行一定级别的跟踪吗?
答案 0 :(得分:6)
您是否在配置文件中配置了跟踪? This是一篇关于这个主题的好文章。
以下是您可以根据需要使用和修改的示例配置:
<system.diagnostics>
<trace autoflush="true" />
<sources>
<source name="System.ServiceModel"
switchValue="Information, ActivityTracing"
propagateActivity="true">
<listeners>
<add name="ServiceModel"
type="System.Diagnostics.XmlWriterTraceListener"
initializeData="C:\ServiceModel.svclog" />
</listeners>
</source>
<source name="System.ServiceModel.MessageLogging">
<listeners>
<add name="MessageLogging"
type="System.Diagnostics.XmlWriterTraceListener"
initializeData="C:\MessageLogging.svclog" />
</listeners>
</source>
</sources>
</system.diagnostics>
<system.serviceModel>
<diagnostics>
<messageLogging logEntireMessage="True"
logMalformedMessages="False"
logMessagesAtServiceLevel="True"
logMessagesAtTransportLevel="False"
maxMessagesToLog="10000"
maxSizeOfMessageToLog="10000" />
</diagnostics>
</system.serviceModel>
使用Service Trace Viewer Tool(SvcTraceViewer.exe)查看生成的日志。
答案 1 :(得分:2)
检查WCF Tracing,也可以选择WCF message logging并使用SvcTraceViewer检查收集的数据 - 您也可以构建跟踪侦听器,以便将跟踪跟踪记录到数据库中。 WCF还提供performance counters。