log4j 是否支持 JSON 格式?

新手上路,请多包涵

是否可以让 log4j 仅通过更改 log4j.properties / xml 配置文件以 JSON 格式输出日志记录?

我使用了一个使用 log4j 1.2 的旧应用程序。我只看到标准布局,但没有看到 JSON 布局。

原文由 Stefan 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 647
2 个回答

只需使用 buildin PatternLayout 就可以了:

 log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.encoding=UTF-8
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern={"debug_level":"%p","debug_timestamp":"%d{ISO8601}","debug_thread":"%t","debug_file":"%F", "debug_line":"%L","debug_message":"%m"}%n

会像这样:

 {
    "debug_level" : "INFO",
    "debug_timestamp" : "2016-05-26 16:37:08,938",
    "debug_thread" : "main",
    "debug_file" : "TestLogOutPut.java",
    "debug_line" : "316",
    "debug_message" : "hello i am a log message"
}

原文由 chad chen 发布,翻译遵循 CC BY-SA 3.0 许可协议

这是官方的 JSON 布局

https://github.com/logstash/log4j-jsonevent-layout

1)添加maven依赖 https://mvnrepository.com/artifact/net.logstash.log4j/jsonevent-layout

 <dependency>
    <groupId>net.logstash.log4j</groupId>
    <artifactId>jsonevent-layout</artifactId>
    <version>1.7</version>
</dependency>

2)将配置添加到您的 log4j.properties 文件

 log4j.rootCategory=WARN, RollingLog
 log4j.appender.RollingLog=org.apache.log4j.DailyRollingFileAppender
 log4j.appender.RollingLog.Threshold=TRACE
 log4j.appender.RollingLog.File=api.log
 log4j.appender.RollingLog.DatePattern=.yyyy-MM-dd
 log4j.appender.RollingLog.layout=net.logstash.log4j.JSONEventLayoutV1

原文由 Karpov S.Y. 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏