共用方式為


<messageLogging>

這個項目會定義 Windows Communication Foundation (WCF) 的訊息記錄功能設定。

<configuration>
  <system.serviceModel>
    <diagnostics>
      <messageLogging>

Syntax

<system.serviceModel>
  <diagnostics>
    <messageLogging logEntireMessage="Boolean"
                    logMalformedMessages="Boolean"
                    logMessagesAtServiceLevel="Boolean"
                    logMessagesAtTransportLevel="Boolean"
                    maxMessagesToLog="Integer"
                    maxSizeOfMessageToLog="Integer">
      <filters>
        <clear />
      </filters>
    </messageLogging>
  </diagnostics>
</system.serviceModel>

屬性和項目

下列章節說明屬性、子元素和父元素。

屬性

屬性 描述
logEntireMessage 布林值,指定是否記錄整個訊息 (訊息標頭和本文)。 預設為 false,意指只會記錄訊息標頭。 這個設定會影響所有的訊息記錄層級 (服務、傳輸和格式錯誤)。
logMalformedMessages 布林值,指定是否記錄格式錯誤的訊息。 格式錯誤的訊息不會計入 maxMessagesToLog。 預設值為 false
logMessagesAtServiceLevel 布林值,指定是否在服務層級追蹤訊息 (在加密和傳輸相關轉換之前)。 預設值為 false
logMessagesAtTransportLevel 布林值,指定是否在傳輸層級追蹤訊息。 在組態檔中指定的任何篩選條件都會套用,且只會追蹤符合篩選條件的訊息。 預設值為 false
maxMessagesToLog 正整數,指定要記錄的訊息數目上限。 預設值是 1000。
maxSizeOfMessageToLog 正整數,指定要記錄之訊息的大小上限 (以位元組為單位)。 大於限制的訊息將不會記錄。 這個設定會影響所有的追蹤層級。 預設為 262144(0x4000)。

子元素

元素 描述
filters filters 項目含有 XPath 篩選條件的集合。 當啟用傳輸訊息記錄時 (logMessagesAtTransportLeveltrue),將只記錄符合篩選條件的訊息。

篩選條件只會在傳輸層套用。 服務等級和格式錯誤訊息記錄不受篩選條件的影響。

filter 這個項目的唯一屬性為 XpathFilter。

<filters> <add xmlns:soap="http://www.w3.org/2003/05/soap-envelope">/soap:Envelope</add> </filters>

父項目

元素 描述
診斷 為系統管理員定義執行階段檢查和控制的 WCF 設定。

備註

訊息會記錄在堆疊中的三個不同層級:服務、傳輸和格式錯誤。 每個層級可個別啟動。

可以加入 XPath 篩選條件,以記錄傳輸和服務層級的特定訊息。 如果沒有定義篩選條件,便會記錄所有的訊息。 篩選條件只會套用於訊息的標頭。 本文會被忽略。 WCF 會忽略訊息本文,以增進效能。 如果您希望根據本文的內容進行篩選,可以使用執行這項工作的篩選條件來建立自訂接聽程式。

您必須建立追蹤接聽程式,以啟動訊息追蹤。 接聽程式本身可以是與 System.Diagnostics 追蹤架構搭配使用的任何接聽程式。 下列範例示範如何建立這類接聽程式。

<system.diagnostics>
  <sources>
    <source name="System.ServiceModel"
            switchValue="Verbose">
      <listeners>
        <clear />
        <add type="System.Diagnostics.DefaultTraceListener"
             name="Default"
             traceOutputOptions="None" />
        <add name="ServiceModel Listener"
             traceOutputOptions="None" />
      </listeners>
    </source>
    <source name="System.ServiceModel.MessageLogging">
      <listeners>
        <clear />
        <add type="System.Diagnostics.DefaultTraceListener"
             name="Default"
             traceOutputOptions="None" />
        <add name="MessageLogging Listener"
             traceOutputOptions="None" />
      </listeners>
    </source>
  </sources>
  <sharedListeners>
    <add initializeData="C:\ItProTools\TraceLog.xml"
         type="System.Diagnostics.XmlWriterTraceListener, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
         name="ServiceModel Listener"
         traceOutputOptions="LogicalOperationStack, DateTime, Timestamp, ProcessId, ThreadId, Callstack" />
    <add initializeData="C:\ItProTools\MessageLog.log"
         type="System.Diagnostics.XmlWriterTraceListener, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
         name="MessageLogging Listener"
         traceOutputOptions="LogicalOperationStack, DateTime, Timestamp, ProcessId, ThreadId, Callstack" />
  </sharedListeners>
</system.diagnostics>

範例

<messageLogging logEntireMessage="true"
                logMalformedMessages="true"
                logMessagesAtServiceLevel="true"
                logMessagesAtTransportLevel="true"
                maxMessagesToLog="42"
                maxSizeOfMessageToLog="42">
  <filters>
    <clear />
  </filters>
</messageLogging>

另請參閱