java如何使log4jdk日志适配器打印JUL级别?
我正在将一个API从JUL(JavautilLogging)迁移到Log4J2,因此我必须保持与公开JUL级别的现有方法的兼容性
例如:
log(java.util.logging.Level level, String message)
所以我决定使用log4jdk日志适配器来保持一切正常工作,但是默认布局会打印新的Log4j级别
下面的代码
Logger.getLogger("bla").severe("An issue occurred");
正在生产
ERROR: An issue occurred
我还希望在输出中保留旧的JUL级别,以便迁移对用户透明。 如何更改布局以继续打印旧的七月级别?例如:
SEVERE: An issue occurred
# 1 楼答案
您可以执行以下操作:
创建一个RoutingAppender将适当级别的消息定向到一个appender,该appender可以通过打印JUL级别名称而不是log4j级别名称来处理这些消息
要测试的简单主类:
Log4j2。xml配置:
样本输出:
注意:似乎因为FIEST和CONFIG是自定义级别,所以无法以与其他级别相同的方式处理它们。这就是为什么需要第二个名为“customLevelAppender”的appender,以及该appender不需要任何特殊配置的原因