メッセージログポリシー

ポリシー名

メッセージログ

概要

受信した要求からの情報、バックエンドからの応答、または同じ API エンドポイントに適用されている他のポリシーからの情報を使用してカスタムメッセージを記録する

カテゴリ

トラブルシューティング

使用可能な最小 Mule バージョン

v3.8.0

返される状況コード

このポリシーの戻りコードは存在しません

概要

メッセージログポリシーは、受信した要求からの情報、バックエンドからの応答、または同じ API エンドポイントに適用されている他のポリシーからの情報を使用してカスタムメッセージを記録します。

Mule ゲートウェイの場合、このポリシーは Apache log4j と Apache log4j2 のどちらでも機能します。

前提条件

Anypoint Platform 組織のシステム管理者ロールか、API を作成または管理するための権限が必要です。

ポリシーのパラメーターの設定

Mule ゲートウェイ

UI を使用してメッセージログポリシーを API に適用する場合は、以下のパラメーターを設定できます。

メッセージログポリシー UI
パラメーター 説明 必須?

Message (メッセージ)

ログに記録するメッセージを抽出する DataWeave 式。 Mule 4 ゲートウェイに関する注意: ペイロードがメッセージログの一部として使用される場合は、リスナーを反復不可能に設定しないでください。

必須

Conditional (条件付き)

メッセージをログに記録するかどうかを指定する DataWeave ブール式。

省略可能

Category (カテゴリ)

ログが実行されたパッケージとクラスを示すログメッセージのプレフィックス。

省略可能

Level (レベル)

記録するメッセージのレベル (INFO (情報)、WARN (警告)、ERROR (エラー)、DEBUG (デバッグ)) を定義します。

必須

Before Calling API (API のコール前)

このポリシーが適用される順序を考慮して、API エンドポイントがコールされる前にメッセージを記録するようにログポリシーを設定します。

省略可能

After Calling API (API のコール後)

このポリシーが適用される順序を考慮して、API エンドポイントがコールされた後にメッセージを記録するようにログポリシーを設定します。

省略可能

UI から設定するメッセージログポリシーの例

メッセージログポリシーの使用方法をよく理解できるように、Les Vetments という架空の洋品小売業者を考えてみましょう。E コマースポータルを正常に運営するため、Les Vetments は Web サイト上で実行された要求の状況コードを監査する必要があります。

たとえば、顧客が商品を購入または返品したり、会社がカタログの商品を追加または削除したりした場合には、トランザクションを記録する必要があります。Les Vetments の IT マネージャーは、会社の API にメッセージログポリシーを適用して、コードを変更することなくあらゆるデータやトランザクションの変更を記録して表示できるようにします。

受信および送信 HTTP メッセージの属性を記録するため、Les Vetments では、次の UI 設定でメッセージログポリシーを API に適用します。

  • Message (メッセージ)​: #[属性]

    ペイロード中の属性を記録する必要があります。

  • Conditional (条件)​: 空白

    Les Vetments ではすべての属性を必要とするため、メッセージを絞り込むための Mule 式は指定しません。

  • Category (カテゴリ)​: 空白

    ログ文ではプレフィックスは不要です。

  • Level (レベル)​: Info (情報)

    すべての種別のメッセージを記録します。Info (情報) ログレベルには、Warn (警告)、Error (エラー)、Debug (デバッグ) ログメッセージも含まれます。

  • Before Calling API (API のコール前)​: オン

    API のコール前に発生したすべてのトランザクションが記録されます。

  • After Calling API (API のコール後)​: オン

    API のコール後に発生したすべてのトランザクションが記録されます。

この設定後は、顧客が Les Vetments のカタログにアクセスしたり、カートの商品を追加または削除したり、Les Vetments のカタログの商品が追加または削除されたりするたびに、ログが生成されます。

ヘッダーを記録するため、Les Vetments では ​[Message (メッセージ)]​ 項目で次のコードスニペットを使用します。

#[attributes.headers]

イベントや実行したアクションに基づいてログメッセージをカスタマイズするため、Les Vetments では ​[Message (メッセージ)]​ 項目で次のコードスニペットを使用します。

#['User ' authentication.clientId ' performed action ' attributes.method ' on ' attributes.requestPath ' with Payload: ' ++ payload]

Mule 4 の XML で設定するメッセージログポリシーの例

次のフローはログポリシーの例を示します。

ポリシーのしくみ

ポリシーのログ記録は次の順序で実行されます。

  1. 要求が API に送信されます。

  2. 次の条件を満たす場合は、メッセージがログに記録されます。

    • ポリシーに定義されているログのレベルとカテゴリが、設定ファイルに定義されたロガーに含まれている。

    • ポリシーの [Conditional (条件付き)] 項目が設定されていないか、または設定されている条件が満たされた。

  3. API 応答が返されます。メッセージログポリシーは、ポリシーやフローの実行に干渉しません。

  4. メッセージがアプリケーションログに表示されます。

ログ形式について

メッセージログの形式は次のとおりです。

  • Flex: <date> [flex-gateway-envoy][<level>] wasm log <policy-name>.default.<api-name>.default.svc main: [req: <request uuid>] [accessLog] <message>

policy-name​: ポリシーバインドの名前を表示します。

api-name​: API インスタンスの名前を表示します。

request uuid​: メッセージをトリガーした要求の一意の識別子を表示します。

  • Mule: <date> <thread name> <level> <category>: <message>

date​ は、メッセージログの日付とタイムスタンプです。

thread name​ は、メッセージが表示されるイベントスレッドの名前です。

level​ は、INFO (情報)、WARN (警告)、ERROR (エラー)、DEBUG (デバッグ) などのログレベルまたはメッセージタイプです。

category​ は、通常はログが発生したパッケージとクラスを示します。デフォルト値は ​org.mule.runtime.logging.policy-<policy id>​ です。

message​: 記録するメッセージを表示します (例: the payload​)。

2018-01-25 18:57:29,907 [WrapperListener_start_runner] INFO org.mule: the payload

2022-05-04T14:50:43.035570800Z [flex-gateway-envoy][debug] wasm log ingress-http-auth.default.ingress-http.default.svc main: [req: 61c7fdcb-8d22-4cb1-852b-0d5073f23950] [accessLog] the payload

イベント中の状態の記録

メッセージのログは、要求フロー中に特定の間隔で発生します。

  • API フローをログに記録する前:

    API フローをログに記録する前の状態
  • API フローをログに記録した後:

    API フローをログに記録した後の状態
  • API フローの後のエラーハンドラー:

    エラーハンドラー実行後の状態