次の方法で共有


メッセージ ログへのフィルタの使用

このサンプルでは、メッセージ ログ用のフィルタを作成する方法を示します。フィルタ条件を満たすメッセージだけが記録されるので、不要なログ出力が減少し、デバッグが容易になります。このサンプルでは、特に SOAP アクション要素に基づいてフィルタ処理する方法を示します。

Noteメモ :

このサンプルにはコードが含まれていません。このサンプルの構成をアプリケーションの構成ファイルに追加して、シナリオのコンテキスト内でのメッセージ ログの変化を確認できます。

メッセージ ログでのフィルタ処理

Windows Communication Foundation (WCF) メッセージ ログは、XPath フィルタを使用してカスタマイズできます。フィルタを通過するメッセージだけが記録されます。フィルタは XPath 言語を使用して定義され、構成ファイルの <messageLogging> 要素に追加できます。

フィルタは、メッセージを記録するために必要な条件を示します。この例では、特定の SOAP アクションでメッセージを記録する方法を示します。

アクションに基づくフィルタ処理

サービスで操作のカスタム アクションが構成されていない限り、メッセージには必ずしもエンドポイントまたはコントラクトの参照を含める必要はありません。

カスタム アクションを使用しない場合は、各メッセージに含まれるアクションの形式は次のようになります

ContractNamespace/ContractName/OperationName

ContractNamespace には http:// が含まれます。

メッセージに SOAP 1.2 バージョンのエンベロープを使用した場合、次の構成で示すように、名前空間 MyContractNamespace を持つコントラクト MyContractName で対象とされるメッセージがフィルタ処理されてログに記録されます。

<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. このサンプルを実行するには、前に示した構成セクションの 1 つを、アプリケーションの構成ファイルに追加します。メッセージ ログの設定はアプリケーション ドメイン全体で有効であるため、ログ フィルタはアプリケーション ドメイン内のログに記録されるすべてのメッセージに影響を及ぼします。

  2. アプリケーションを実行します。フィルタ条件に一致するメッセージだけがディスクに記録されることに注意してください。

関連項目

その他の技術情報

Configuring Message Logging

Footer image

Copyright © 2007 by Microsoft Corporation.All rights reserved.