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
に変更します。
Anypoint Runtime Fabric または CloudHub 2.0 を使用して Mule アプリケーションをデプロイしている場合、MDC ログはサポートされません。 |
次の手順に従って、アプリケーションに 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" ] }