默认情况下,
JsonLayout
会生成许多有用的字段。
不幸,
当我提供额外的
KeyValuePair
在配置中,
日志条目的内容减少为仅自定义键和
"logEvent"
。
配置:
<JsonLayout objectMessageAsJsonObject="true"
propertiesAsList="false"
properties="true"
locationInfo="false"
includeStacktrace="true"
compact="true"
complete="false"
eventEol="true">
<!--KeyValuePair key="myKey" value="anything"/ -->
</JsonLayout>
当KeyValuePair
被注释掉时,
日志条目如下所示:
{
"thread": "main",
"level": "INFO",
"loggerName": "MainKt",
"message": "Hello=10 World=20",
"endOfBatch": false,
"loggerFqcn": "org.apache.logging.log4j.spi.AbstractLogger",
"threadId": 1,
"contextMap":
{
"test": "2"
},
"instant":
{
"epochSecond": 1575310424,
"nanoOfSecond": 747824500
},
"threadPriority": 5
}
当它包含在配置中时:
{"logEvent":"Hello=10 World=20","myKey":"anything"}
如何在keyValue对中包含默认字段?
我不要他们全部
仅level
,markers
,mdc
,loggerName
,threadId
。
有这个地图吗?
我在文档中看不到答案。
另一部分是objectMessageAsJsonObject
的行为:
如果没有提供其他密钥,我会看到message
中带有JSON对象,
但是一旦我提供了任何密钥,它就会消失并且logEvent
被填充
根据以前的日志中的任何值(对我来说,这似乎是个错误)。