Java 的 log4j2 怎么按级别输出到不同文件?

2018-05-13 21:55:14 +08:00
 eightqueen

我希望所有 error 日志都打到 error.log 文件里,所以设定最顶层的 logger(com.baidu)日志级别为 error,子包(比如 com.baidu.trace )级别为 info,但是子包的 error 日志始终无法打到 error.log 里,而是和 info 日志一起打到子包配置的文件里。

1962 次点击
所在节点    Java
2 条回复
vjnjc
2018-05-14 01:27:34 +08:00
我也想知道😂
zhantss
2018-05-14 03:48:52 +08:00
log4j 实现每一个等级的 Threshold 是按照优先级的包含关系确定写入文件的,比如 info 包含了 error 等
你需要控制写入文件的话需要自己实现一个 Appender,主要重写的方法是 isAsSevereAsThreshold,改成相同而不是 equals,默认返回还是 true
具体看这两段代码
https://github.com/apache/log4j/blob/trunk/src/main/java/org/apache/log4j/AppenderSkeleton.java#L218
https://github.com/apache/log4j/blob/trunk/src/main/java/org/apache/log4j/Priority.java#L123

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/454547

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX