log4j2是否与Java 11兼容?

11 浏览
0 Comments

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中不再起作用。

0