Flex Gateway新着情報
Governance新着情報
Monitoring API ManagerMapped Diagnostic Context (MDC) では、より多くのコンテキストまたは情報が現在の Mule イベントのログに提供されるため、ログが強化され、追跡が改善されます。
デフォルトでは、Mule では、現在のイベントの場所を表示する processor と、イベントの相関 ID を表示する event の 2 つの MDC エントリが記録されます。
Mule Tracing Module を使用すると、特定の Mule イベントのログコンテキストの変数を追加、削除、クリアすることでログを強化できます。このログコンテキストは、対応するイベントの実行全体にわたって存在します。
MDC ログ操作を使用するには、次のタスクを完了します。
アプリケーションに Mule Tracing Module をインストールします。
log4j2.xml ファイル内のパターンレイアウトを MDC に変更します。
| MDC ログは、Anypoint Runtime Fabric または CloudHub 2.0 で用できます。ただし、CloudHub 1.0 を使用して Mule アプリケーションをデプロイしている場合、MDC ログはサポートされません。詳細は、 「CloudHub での MDC Logging Module のサポート」を参照してください。 |
次の手順に従って、アプリケーションに Mule Tracing Module をインストールします。
Anypoint Studio で Mule プロジェクトを開きます。
[Mule Palette (Mule パレット)] に移動します。
[Search in Exchange (Exchange で検索)] を選択して、Mule Tracing Module を検索します。
モジュールを選択し、[Add (追加)] をクリックします。
[Finish (完了)] をクリックします。
この変更では、相関 ID とプロセッサーパスを含む MDC コンテキストを自動的に追加するように Mule に指示します。Mule アプリケーションの log4j2.xml ファイルまたは Mule インスタンスのファイルを変更できます。このファイルは /conf/log4j2.xml にあります。
次の手順に従って、パターンレイアウトを MDC に変更します。
log4j2.xml ファイルを編集目的で開きます。
[processor: %X{processorPath}; event: %X{correlationId}] を [%MDC] に置き換えます。
| XML 要素 | 説明 | 受け入れられる属性 | ||||||
|---|---|---|---|---|---|---|---|---|
|
ログ変数とその値を設定します。 |
|
||||||
|
ログ変数を削除します。 |
|
||||||
|
すべてのログ変数を削除します。このオプションでは、プロセッサーパスまたは相関 ID は削除されません。 |
なし |
MDC ログを設定するには、使用可能ないずれかの操作を Mule アプリケーションフローに追加して、対応する属性を指定します。
たとえば、ログ変数を設定するには、<tracing:set-logging-variable> XML 要素をアプリケーションフローに挿入します。
<flow name="exampleFlow">
...
<tracing:set-logging-variable variableName="testVar" value="testValue" />
...
</flow>
フローの実行後、出力ログは次のようになります。
INFO 2021-04-08 16:58:26,882 [[MuleRuntime].uber.15: [test-project-app].exampleFlow.CPU_LITE @18f679] [{correlationId=c85e16c0-98a4-11eb-bc34-cac765a2219b, processorPath=exampleFlow/processors/2, testVar=testValue}] org.mule.runtime.core.internal.processor.LoggerMessageProcessor: Example
このログコンテキストは、Logger コンポーネントのすべての出力と Mule Runtime で生成されるすべての内部ログに影響します。このため、予期しないエラーが発生している場合など、潜在的な問題を見つけ出すための追加の情報が必要な場合に、Mule で処理しているイベントに、より多くのコンテキストを追加できます。
次のアプリケーションを考えてみます。
<flow name="logging-variables">
<http:listener config-ref="HTTP_Listener_config" path="/order"/>
<tracing:set-logging-variable variableName="customerId" value="#[payload.customerId]"/>
<tracing:set-logging-variable variableName="requestPath" value='#["$(attributes.method):$(attributes.requestPath)"]'/>
<logger level="INFO" message="#[output application/json --- payload]" />
</flow>
次の要求を送信します。
curl --location --request GET '0.0.0.0:8081/order' \
--header 'Content-Type: application/json' \
--data-raw '{
"orderId": 548102842,
"customerId": "ARG-12934",
"items": [
"CP-123",
"CP-452"
]
}'
出力ログは次のようになります。
INFO 2021-04-09 11:14:38,409 [[MuleRuntime].uber.05: [tracing-module].tracing-moduleFlow.CPU_LITE @34a62707] [processor: tracing-moduleFlow/processors/2; event: eb2b2461-993d-11eb-8a64-4865ee1fd814] {correlationId=eb2b2461-993d-11eb-8a64-4865ee1fd814, customerId=ARG-12934, processorPath=tracing-moduleFlow/processors/2, requestPath=GET:/order} org.mule.runtime.core.internal.processor.LoggerMessageProcessor: {
"orderId": 548102842,
"customerId": "ARG-12934",
"items": [
"CP-123",
"CP-452"
]
}