此示例演示如何为消息日志记录创建筛选器。仅记录符合筛选条件的消息,这会减少不必要的日志记录输出并使调试更加容易。具体而言,此示例演示如何基于 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主题。
设置、生成和运行示例
若要运行此示例,请将上面列出的配置节之一添加到您的应用程序的配置文件中。由于消息日志记录的设置在整个应用程序域中有效,因此日志记录筛选器会影响在应用程序域中记录的所有消息。
运行该应用程序。请注意,仅将符合筛选条件的消息记录到磁盘中。
另请参见
其他资源
Send comments about this topic to Microsoft.
© 2007 Microsoft Corporation. All rights reserved.