跟踪对WCF服务所做的所有调用(+他们的堆栈)

时间:2011-12-05 21:32:40

标签: wcf performance logging

我有一个WCF服务,目前正在生产中。代码性能不是我们希望它们的位置,我们无法在Staging环境中重现。

我想知道是否可以记录对服务和服务进行的每个方法调用。基本上我想要一个所有调用和时间戳的顺序列表(我们的代码不是多线程的)。

有没有办法实现这一点,而无需检测二进制文件。我们可以在web.config中的system.diagnostic节点下进行一定级别的跟踪吗?

2 个答案:

答案 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