<messageLogging>

该元素定义 Windows Communication Foundation (WCF) 的消息日志记录功能的设置。

configuration
  system.serviceModel
    <diagnostics>
      <messageLogging>

语法

<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 元素包含 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>

请参阅