Flex Gateway新着情報
Governance新着情報
Monitoring API Managerポリシー名  | 
メッセージログ  | 
概要  | 
受信した要求からの情報、バックエンドからの応答、または同じ API エンドポイントに適用されている他のポリシーからの情報を使用してカスタムメッセージを記録する  | 
カテゴリ  | 
トラブルシューティング  | 
使用可能な最小 Mule バージョン  | 
v3.8.0  | 
返される状況コード  | 
このポリシーの戻りコードは存在しません  | 
メッセージログポリシーは、受信した要求からの情報、バックエンドからの応答、または同じ API エンドポイントに適用されている他のポリシーからの情報を使用してカスタムメッセージを記録します。
Mule ゲートウェイの場合、このポリシーは Apache log4j と Apache log4j2 のどちらでも機能します。
UI を使用してメッセージログポリシーを API に適用する場合は、以下のパラメーターを設定できます。
| パラメーター | 説明 | 必須? | 
|---|---|---|
Message (メッセージ)  | 
ログに記録するメッセージを抽出する DataWeave 式。 Mule 4 ゲートウェイに関する注意: ペイロードがメッセージログの一部として使用される場合は、リスナーを反復不可能に設定しないでください。  | 
必須  | 
Conditional (条件付き)  | 
メッセージをログに記録するかどうかを指定する DataWeave ブール式。  | 
省略可能  | 
Category (カテゴリ)  | 
ログが実行されたパッケージとクラスを示すログメッセージのプレフィックス。  | 
省略可能  | 
Level (レベル)  | 
記録するメッセージのレベル (INFO (情報)、WARN (警告)、ERROR (エラー)、DEBUG (デバッグ)) を定義します。  | 
必須  | 
Before Calling API (API のコール前)  | 
このポリシーが適用される順序を考慮して、API エンドポイントがコールされる前にメッセージを記録するようにログポリシーを設定します。  | 
省略可能  | 
After Calling API (API のコール後)  | 
このポリシーが適用される順序を考慮して、API エンドポイントがコールされた後にメッセージを記録するようにログポリシーを設定します。  | 
省略可能  | 
メッセージログポリシーの使用方法をよく理解できるように、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 のカタログの商品が追加または削除されたりするたびに、ログが生成されます。
**********************************************************************
* Policy: message-logging-1351146-proxy                              *
* OS encoding: UTF-8, Mule encoding: UTF-8                           *
*                                                                    *
**********************************************************************
21:56:50.147     11/30/2020     Worker-0     [MuleRuntime].uber.06: [message-logging-771181-proxy].771181-message-logging.CPU_LITE @71625864     INFO
event:184152a0-3370-11eb-b732-0a8c1820c088 org.mule.extension.http.api.HttpRequestAttributes
{
   Request path=/proxy/1
   Raw request path=/proxy/1
   Method=GET
   Listener path=/proxy/*
   Local Address=/172.25.159.101:8081
   Query String=
   Relative Path=/proxy/1
   Masked Request Path=/1
   Remote Address=/18.191.37.179:21836
   Request Uri=/proxy/1
   Raw request Uri=/proxy/1
   Scheme=http
   Version=HTTP/1.1
   Headers=[
      host=logging-policy.us-e2.cloudhub.io
      x-real-ip=204.14.236.154
      accept=*/*
      user-agent=curl/7.54.0
      x-forwarded-for=204.14.236.154
      x-forwarded-port=80
      x-forwarded-proto=http
      x-sigsci-agentresponse=200
      x-sigsci-mac=7caf3820a5c07d06ef827f1565678167
   ]
   Query Parameters=[]
   URI Parameters=[]
}
21:56:50.254     11/30/2020     Worker-0     [MuleRuntime].uber.07: [logging-policy].proxy.CPU_LITE @f0ce617     INFO
event:184152a0-3370-11eb-b732-0a8c1820c088 org.mule.extension.http.api.HttpResponseAttributes
{
   Status Code=200
   Reason Phrase=OK
   Headers=[
      date=Tue, 01 Dec 2020 00:56:50 GMT
      content-type=application/json; charset=utf-8
      set-cookie=__cfduid=d8afa23a4627ebef39cbc54fea223cb231606784210; expires=Thu, 31-Dec-20 00:56:50 GMT; path=/; domain=.typicode.com; HttpOnly; SameSite=Lax
      x-powered-by=Express
      x-ratelimit-limit=1000
      x-ratelimit-remaining=999
      x-ratelimit-reset=1606784265
      vary=Origin, Accept-Encoding
      access-control-allow-credentials=true
      cache-control=max-age=43200
      pragma=no-cache
      expires=-1
      x-content-type-options=nosniff
      etag=W/"53-hfEnumeNh6YirfjyjaujcOPPT+s"
      via=1.1 vegur
      cf-cache-status=MISS
      accept-ranges=bytes
      cf-request-id=06bd666d0a0000386b7a1fc000000001
      expect-ct=max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"
      report-to={"endpoints":[{"url":"https:\/\/a.nel.cloudflare.com\/report?s=qUAIXoQ7qqqvFzjcwGrmK2r2PcSfDZ75jFJd0Gi0BLBUMHAcnC9wJ9I%2FEHJtk%2Bra%2FXWqkA%2F5%2FlzoWoC6YS2Lew%2BqKgjhaphHqx5WrZ0CKHMalhcM9it%2Fks0qzQGwbsRzQg%3D%3D"}],"group":"cf-nel","max_age":604800}
      nel={"report_to":"cf-nel","max_age":604800}
      cf-ray=5fa8d9c1a8c6386b-IAD
   ]
}
12:18:31.770     11/18/2020     Worker-0     agw-policy-set-deployment.01     INFO
Applied policy message-logging-1351146 version 1.0.0 to API testLoggingNew-v1-v1:16481163 (16481163) in application messagelog
ヘッダーを記録するため、Les Vetments では [Message (メッセージ)] 項目で次のコードスニペットを使用します。
#[attributes.headers]
イベントや実行したアクションに基づいてログメッセージをカスタマイズするため、Les Vetments では [Message (メッセージ)] 項目で次のコードスニペットを使用します。
#['User '  authentication.clientId  ' performed action '  attributes.method  ' on '  attributes.requestPath  ' with Payload: ' ++ payload]
次のフローはログポリシーの例を示します。
<?xml version="1.0" encoding="UTF-8"?>
<mule xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xmlns="http://www.mulesoft.org/schema/mule/core"
      xmlns:http-policy="http://www.mulesoft.org/schema/mule/http-policy"
      xsi:schemaLocation="http://www.mulesoft.org/schema/mule/core
      http://www.mulesoft.org/schema/mule/core/current/mule.xsd
      http://www.mulesoft.org/schema/mule/http-policy
      http://www.mulesoft.org/schema/mule/http-policy/current/mule-http-policy.xsd">
<http-policy:proxy name="102280-message-logging">
  <http-policy:source>
   <try>
	<try>
	  <logger level="INFO" message="#[payload]"
	  category="org.mule.runtime.logging.policy-102280"/>
	    <error-handler>
	     <on-error-continue>
		<logger level="DEBUG" message="Before calling API turned into an error"
			category="org.mule.runtime.logging.policy-102280"/>
	     </on-error-continue>
	    </error-handler>
	</try>
        <http-policy:execute-next/>
          <error-handler>
	    <on-error-propagate logException="false">
	    </on-error-propagate>
          </error-handler>
  </try>
  </http-policy:source>
</http-policy:proxy>
</mule>
ポリシーのログ記録は次の順序で実行されます。
要求が API に送信されます。
次の条件を満たす場合は、メッセージがログに記録されます。
ポリシーに定義されているログのレベルとカテゴリが、設定ファイルに定義されたロガーに含まれている。
ポリシーの [Conditional (条件付き)] 項目が設定されていないか、または設定されている条件が満たされた。
API 応答が返されます。メッセージログポリシーは、ポリシーやフローの実行に干渉しません。
メッセージがアプリケーションログに表示されます。
メッセージログの形式は次のとおりです。
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