簡體   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