嘿,我有一个使用log4j和slf4j进行日志记录的项目。 我将日志的布局配置为JsonLayout。 是否可以在保持json格式的同时记录JSON对象。
例如:
JsonObject object = new JsonObject();
object.addProperty("ID", 3);
LOGGER.info("{}", object);
将输出:
{
"timeMillis" : 1496579005079,
"thread" : "main",
"level" : "INFO",
"loggerName" : "Logger",
**"message" : "{\"ID\":3}",**
"endOfBatch" : false,
"loggerFqcn" : "org.apache.logging.slf4j.Log4jLogger",
"threadId" : 1,
"threadPriority" : 5
}
虽然我需要它输出:
{
"timeMillis" : 1496579005079,
"thread" : "main",
"level" : "INFO",
"loggerName" : "Logger",
**"message" : {"ID":3},**
"endOfBatch" : false,
"loggerFqcn" : "org.apache.logging.slf4j.Log4jLogger",
"threadId" : 1,
"threadPriority" : 5
}
答案 0 :(得分:0)
有一个objectMessageAsJsonObject应该为您执行此操作。 在您的log4j2.xml中:
<RollingFile name="json-log" fileName="build/log"
filePattern="/var/log/.%d{yyyy-MM-dd}.log">
<JSONLayout objectMessageAsJsonObject="true"/>
</RollingFile>