1

このパターンレイアウトの log4j2-spirng.xml があります

<PatternLayout alwaysWriteExceptions="false"      
 pattern={... &quot;userId&quot;:&quot;%X{userId}&quot;} ..." />

userId は MDC からの値です。null の場合、次のように空白の値でログに記録されます。

..., "userId": "", ...

JsonTemplateLayout を使用して、すべてのフィールドをパターン レイアウトから Json テンプレートに移動しようとしています。

log-template では、同じログ メッセージを作成しようとしています。タイムスタンプやその他のフィールドは問題ありません。mdc 値にのみ問題があります。値が存在する場合、それらは正しくログに記録されますが、存在しない場合、フィールドは無視され、ログに含まれません。このように mdc から値を読み取る

...
  "userId": {
    "$resolver": "mdc",
    "key": "userId"
  },
...

フォーマットを適用してこの「%X」をどこかに配置する必要がありますか?それともどのように機能しますか? すべてのフィールドを含むパターン レイアウトと同じログを取得する必要があります。フィールドが MDC に存在しないか、null または空の場合でも、空の文字列値だけでログに含めます。

4

1 に答える 1