对消息日志记录使用筛选器

此示例演示如何为消息日志记录创建筛选器。仅记录符合筛选条件的消息,这会减少不必要的日志记录输出并使调试更加容易。具体而言,此示例演示如何基于 SOAP Action 元素进行筛选。

提示

此示例不包括代码。您可以将此示例中所提供的配置添加到您的应用程序的配置文件中,并在您的方案的上下文中观看对消息日志记录进行的更改。

在消息日志记录中筛选

Windows Communication Foundation (WCF) 消息日志记录功能可以使用 XPath 筛选器进行自定义。仅记录通过筛选器的消息。筛选器是使用 XPath 语言定义的,可以添加到配置文件的 <messageLogging> 元素中。

筛选器会列出消息必须满足哪些条件才能进行记录。此示例演示如何记录具有特定 SOAP Action 的消息。

基于 Action 筛选

除非服务没有针对操作配置自定义 Action,否则消息不必包含终结点或协定引用。

如果没有使用自定义操作,则每个消息中包括的 Action 会采用如下格式。

ContractNamespace/ContractName/OperationName

ContractNamespace 包括 http://。

如果您针对消息使用 SOAP 1.2 版的信封,则会筛选面向协定 MyContractName 且具有命名空间 MyContractNamespace 的消息以进行日志记录,如下面的配置所示。

<messageLogging logMessagesAtTransportLevel="true" logMessagesAtServiceLevel="true" >
   <filters>
      <add xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:a="http://www.w3.org/2005/08/addressing">/soap:Envelope/soap:Header/a:Action[starts-with(text(),'MyContractNamespace/MyContractName')]</add>
   </filters>
</messageLogging>

下面是一个添加筛选器的示例,该筛选器为跟踪和消息日志记录示例的 Add(添加)请求指定命名空间和协定名称。

<filters>
   <add xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:a="http://www.w3.org/2005/08/addressing">/soap:Envelope/soap:Header/a:Action[starts-with(text(),'http://Microsoft.ServiceModel.Samples/ICalculator/Add')]</add>
</filters>

如果使用自定义操作,则可以借助于消息日志记录功能来筛选采用如下操作的消息。

<add xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:a="http://www.w3.org/2005/08/addressing">/soap:Envelope/soap:Header/a:Action/text()="MyAction"</add>

对于 SOAP 1.1 版的信封,应当将 SOAP 命名空间替换为 https://schemas.xmlsoap.org/soap/envelope/。对于不同版本的寻址,应当执行类似的更改。

对于 HTTP 基本配置文件,标头不是信封的一部分,而且将作为 HTTP 头发送。您应当根据需要来修改筛选技术。

有关消息日志记录的更多信息,请参见Configuring Message Logging主题。

设置、生成和运行示例

  1. 若要运行此示例,请将上面列出的配置节之一添加到您的应用程序的配置文件中。由于消息日志记录的设置在整个应用程序域中有效,因此日志记录筛选器会影响在应用程序域中记录的所有消息。

  2. 运行该应用程序。请注意,仅将符合筛选条件的消息记录到磁盘中。

另请参见

其他资源

Configuring Message Logging

Send comments about this topic to Microsoft.
© 2007 Microsoft Corporation. All rights reserved.