繁体   English   中英

具有唯一ID的WCF诊断消息记录

[英]WCF Diagnostics Message Logging With Unique Id

我正在使用System.Diagnostics System.ServiceModel.MessageLogging和以下配置记录有关WCF Web服务的消息。 我将TraceListener类扩展为:

public class FormattedTraceListener : TraceListener
    {
        static readonly Logger logger = new Logger();

        public FormattedTraceListener()
            : base(string.Empty)
        {
        }

        public override void TraceData(TraceEventCache eventCache,String source,TraceEventType eventType,**Int32 id,**Object data)
        {
//....
 <system.diagnostics>
    <sources>
      <source name="System.ServiceModel.MessageLogging" >
        <listeners>
          <add name="pretty" />
          <remove name="Default"/>
        </listeners>
      </source>
    </sources>
    <sharedListeners>
      <add name="pretty" lockItem="true" type="LoggingTest.FormattedXmlWriterTraceListener,LoggingTest" />
    </sharedListeners>
    <trace autoflush="true" indentsize="4">
    </trace>
</system.diagnostics>

....

 <diagnostics >
      <messageLogging
                    logEntireMessage="true"
                    logMalformedMessages="false"
                    logMessagesAtServiceLevel="true"
                    logMessagesAtTransportLevel="false"
                    maxMessagesToLog="-1"
                    maxSizeOfMessageToLog="134217728">
        <filters >
          <add xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">/s:Envelope</add>
          <add xmlns:s="http://www.w3.org/2003/05/soap-envelope">/s:Envelope</add>
        </filters>
      </messageLogging>
      <endToEndTracing  propagateActivity="true" activityTracing="true" messageFlowTracing="true" />
    </diagnostics>
</system.serviceModel>

对于每个服务调用, TraceData方法均触发两次(用于请求和响应)。 但是,当单击method时, id参数始终为0。

我需要在日志记录文本中使用唯一的ID来匹配请求和响应日志。 我该如何指定?

您的方法不正确。 TraceData(int id)字段不是WCF请求的唯一ID。 它是事件类型的应用程序定义的代码。

只需使用标准WCF跟踪类并查看相关跟踪即可 如果我了解您在匹配请求和响应中要完成的工作,则默认行为已经满足您的要求。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM