此元素定義了 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 濾波器。 當傳輸訊息日誌啟用(logMessagesAtTransportLevel 是 true),時,僅記錄符合過濾器的訊息。濾波器僅施加於傳輸層。 服務等級與格式錯誤的訊息記錄不受過濾器影響。 此元素 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>