共用方式為


<訊息記錄>

此元素定義了 Windows 通訊基礎(WCF)訊息記錄功能的設定。

<組態>
   <system.service模型>
     <診斷>
       <訊息紀錄>

語法

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

屬性和項目

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

Attributes

Attribute Description
logEntireMessage 一個布林值,指定整個訊息(訊息標頭與主體)是否被記錄。 預設為 false,表示只有訊息標頭會被記錄。 此設定影響所有訊息記錄層級(服務、傳輸及格式錯誤)。
logMalformedMessages 一個布林值,指定是否會記錄格式不佳的訊息。 格式不符的訊息不計入 maxMessagesToLog。 預設值為 false
logMessagesAtServiceLevel 一個布林值,指定訊息是否在服務層級(加密與傳輸相關轉換前)被追蹤。 預設值為 false
logMessagesAtTransportLevel 一個布林值,指定訊息是否在傳輸層級被追蹤。 設定檔中指定的任何過濾器都會被套用,且只有符合這些過濾器的訊息才會被追蹤。 預設值為 false
maxMessagesToLog 一個正整數,指定要記錄的最大訊息數量。 預設值為 1000。
maxSizeOfMessageToLog 一個正整數,指定訊息最大大小(以位元組計)以記錄。 超過限制的訊息將不會被記錄。 此設定會影響所有追蹤層級。 預設為 262144(0x4000)。

子專案

元素 Description
filters filters 元素包含一組 XPath 濾波器。 當傳輸訊息日誌啟用(logMessagesAtTransportLeveltrue),時,僅記錄符合過濾器的訊息。

濾波器僅施加於傳輸層。 服務等級與格式錯誤的訊息記錄不受過濾器影響。

此元素 filter唯一的屬性是 XpathFilter。

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

父項目

元素 Description
diagnostics 定義 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>

Example

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

另請參閱