log4j2是否与Java 11兼容?
log4j2是否与Java 11兼容?
我尝试在最新的Java 11上运行我的项目。除了特定的文件记录器之外,其他都正常工作。在以前的Java版本(10、9、8)中,日志记录正常工作,但在Java 11中不行。
在服务器运行期间,我只看到一个警告:
警告:不支持sun.reflect.Reflection.getCallerClass。这会影响性能。
这是我的配置:
%d{HH:mm:ss.SSS} - %msg%n %d{HH:mm:ss.SSS} - %msg%n %msg%n %d{HH:mm:ss.SSS} %-5level- %msg%n
除了userLog
之外,所有记录器都正常工作。然而,userLog
是空的。
log4j2版本2.11.1 Ubuntu 16.04.5 LTS java版本 "11.0.1" 2018-10-16 LTS Java(TM) SE运行环境 18.9 (build 11.0.1+13-LTS) Java HotSpot(TM) 64位服务器VM 18.9 (build 11.0.1+13-LTS, 混合模式)
更新:
在根级别添加level="info"
可以解决此问题。
然而,在我的项目中,我使用了一个根据属性文件设置日志级别的代码。这是代码:
private static void changeLogLevel(String level) { Level newLevel = Level.valueOf(level); LoggerContext ctx = (LoggerContext) LogManager.getContext(false); Configuration conf = ctx.getConfiguration(); conf.getLoggerConfig(LogManager.ROOT_LOGGER_NAME).setLevel(newLevel); ctx.updateLoggers(conf); }
似乎这部分在Java 11中不再起作用。