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

Mar*_*tin 4 performance wcf logging

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

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

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

Ber*_*ard 6

您是否在配置文件中配置了跟踪?是一篇关于这个主题的好文章.

以下是您可以根据需要使用和修改的示例配置:

<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>
Run Code Online (Sandbox Code Playgroud)

使用服务跟踪查看器工具(SvcTraceViewer.exe)查看生成的日志.