このパターンレイアウトの log4j2-spirng.xml があります
<PatternLayout alwaysWriteExceptions="false"
pattern={... "userId":"%X{userId}"} ..." />
userId は MDC からの値です。null の場合、次のように空白の値でログに記録されます。
..., "userId": "", ...
JsonTemplateLayout を使用して、すべてのフィールドをパターン レイアウトから Json テンプレートに移動しようとしています。
log-template では、同じログ メッセージを作成しようとしています。タイムスタンプやその他のフィールドは問題ありません。mdc 値にのみ問題があります。値が存在する場合、それらは正しくログに記録されますが、存在しない場合、フィールドは無視され、ログに含まれません。このように mdc から値を読み取る
...
"userId": {
"$resolver": "mdc",
"key": "userId"
},
...
フォーマットを適用してこの「%X」をどこかに配置する必要がありますか?それともどのように機能しますか? すべてのフィールドを含むパターン レイアウトと同じログを取得する必要があります。フィールドが MDC に存在しないか、null または空の場合でも、空の文字列値だけでログに含めます。