log4j2的xml、properties配置

 xml配置:



    
        
            
        
        
            /export/Logs/ProductStockEs.local/esproduct.log
            /export/Logs/ProductStockEs.local/esproduct.log.%d{yyyy-MM-dd}
            
                %d - %c.%M [%t] %p %X{mdc} %x - %m%n
            
            
                
            
        
    
    
        
        
        
        
            
            
        
    

properties配置

 

status = off
name = PropertiesConfig
### console
appender.console.type = Console
appender.console.name = STDOUT
appender.console.layout.type = PatternLayout
appender.console.layout.pattern = %d - %c.%M [%t] %p %X{mdc} %x - %m%n

### RollingFile
appender.rolling.type = RollingFile
appender.rolling.name = FILE
appender.rolling.append = true
appender.rolling.fileName = @logpath@
appender.rolling.filePattern = @logPattern@
appender.rolling.layout.type = PatternLayout
appender.rolling.layout.pattern = %d - %c.%M [%t] %p %X{mdc} %x - %m%n
appender.rolling.policies.type = Policies
appender.rolling.policies.time.type = TimeBasedTriggeringPolicy
appender.rolling.policies.time.interval = 1
appender.rolling.policies.time.modulate = true

### logger
logger.rolling.name = com.jd.wj.es
logger.rolling.level = INFO
logger.rolling.additivity = true
logger.rolling.appenderRef.rolling.ref = FILE

### rootLogger
rootLogger.level = info
rootLogger.appenderRef.stdout.ref = STDOUT

这个配置功能是一样的。

注意一点:logger.rolling.additivity = true的作用是将该logger日志在控制台也打印,如果是false,则只会打印到esproduct.log文件中。

@filename@是通过maven打进去的。

 

吐槽log4j2:

文档写的不好,好多配置都是慢慢碰出来的。尤其是对log4j配置不了的前提下。

关于日志路径配置问题,刚开始是通过log4j2.xml进行配置,无法配置dev、stage、prod不同环境的日志路径。官方给出了一些方案,比如可以通过ctx、env、sys等配置,但是问题来了,通过env配置会导致项目可读性差,放弃;想通过sys配置,将sys通过spring进行注入,但是特么log4j2的启动要比spring快,导致需要这个配置时没有,不知道如何让log4j2的初始化比spring晚,放弃。想到可以使用properties,路径通过maven打进去,就是@filename@的作用。

整体感觉log4j2的易用性比较低,性能可能好,但是切换起来比较麻烦,不如logback好配置。

你可能感兴趣的:(log4j2)