【问题标题】:Log JSON object with log4j JsonLayout使用 log4j JsonLayout 记录 JSON 对象
【发布时间】:2017-06-04 13:34:34
【问题描述】:

嘿,我有一个使用 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
}

【问题讨论】:

  • 是否曾为此找到或给出答案?

标签: java json logging log4j slf4j


【解决方案1】:

有一个 objectMessageAsJsonObject 应该为您执行此操作。 在您的 log4j2.xml 中:

 <RollingFile name="json-log" fileName="build/log"
      filePattern="/var/log/.%d{yyyy-MM-dd}.log">
      <JSONLayout objectMessageAsJsonObject="true"/>    
 </RollingFile>

【讨论】:

    猜你喜欢
    • 2016-12-02
    • 2019-12-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多