我有这种模式布局的 log4j2-spirng.xml
<PatternLayout alwaysWriteExceptions="false"
pattern={... "userId":"%X{userId}"} ..." />
userId 是来自 MDC 的值。如果它为空,则使用如下空白值记录:
..., "userId": "", ...
现在我正在尝试使用 JsonTemplateLayout 将所有字段从模式布局移动到 Json 模板。
在日志模板中,我正在尝试构建相同的日志消息。时间戳和其他字段都很好,没有问题。唯一的问题是 mdc 值。当值存在时,这些值被正确记录,但当不存在时,字段将被忽略并且不包含在日志中。像这样从 mdc 读取值
...
"userId": {
"$resolver": "mdc",
"key": "userId"
},
...
我应该应用格式并将这个“%X”放在某个地方还是它是如何工作的?我必须从模式布局中获取与所有字段相同的日志,并且如果字段在 MDC 中不存在或为空或为空,则仍将其仅包含在日志中,并带有空字符串值。