[英]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.