Log4j,Log4j2,logback,slf4j日志框架之我所知道的一切随便写写

日志框架

SLF4J

说到日志不得不先说SLF4J,简单日志门面,对应的英文为Simple Logging Facade,是存取日志的标准接口,包括slf4j、log4j、jdk logging api和apache common-log等具体实现。

简单一点来说呢,他就是一个日志框架的接口,没有具体的日志实现,好处呢就是项目打日志的时候直接使用它,如果需要换具体的实现对代码也没有侵入只需要更换jar包和配置就好了,所以alibaba的编程规范中有下面这一条:
Log4j,Log4j2,logback,slf4j日志框架之我所知道的一切随便写写_第1张图片
下面说一下实现需要导入的包

slf4j与log4j整合导入的jar包为
slf4j-api.jar
slf4j-log4j12.jar
log4j.jar

slf4j与log4j2整合导入的jar包为:
slf4j-api.jar
log4j-slf4j-impl.jar
log4j-api.jar
log4j-core.jar

slf4j与logback整合导入的jar包为:
slf4j-api.jar
logback-core.jar
logback-classic.jar

springboot

项目默认使用logback,如果需要使用log4j2的话对于springboot来说
首先要排除默认jar的依赖


            org.springframework.boot
            spring-boot-starter
            
                
                    org.springframework.boot
                    spring-boot-starter-logging
                
                
                    ch.qos.logback
                    logback-classic
                
            
        

另外在application.yml中配置log4j配置文件的路径:

logging:
  config: classpath:log4j2.xml

添加依赖

          
              org.springframework.boot
              spring-boot-starter-log4j2
          

dubbo

dubbo默认使用log4j打印日志
找到dubbo中的LoggerFactory类有如下代码

static {
        String logger = System.getProperty("dubbo.application.logger");
        if ("slf4j".equals(logger)) {
            setLoggerAdapter(new Slf4jLoggerAdapter());
        } else if ("jcl".equals(logger)) {
            setLoggerAdapter(new JclLoggerAdapter());
        } else if ("log4j".equals(logger)) {
            setLoggerAdapter(new Log4jLoggerAdapter());
        } else if ("jdk".equals(logger)) {
            setLoggerAdapter(new JdkLoggerAdapter());
        } else {
            try {
                setLoggerAdapter(new Log4jLoggerAdapter());
            } catch (Throwable e1) {
                try {
                    setLoggerAdapter(new Slf4jLoggerAdapter());
                } catch (Throwable e2) {
                    try {
                        setLoggerAdapter(new JclLoggerAdapter());
                    } catch (Throwable e3) {
                        setLoggerAdapter(new JdkLoggerAdapter());
                    }
                }
            }
        }
    }

可以通过增加启动参数
-Ddubbo.application.logger=slf4j
设置

log4j2 配置



    
        ../logs
        ../druid-logs
        [%p] [%-d{yyyy-MM-dd HH:mm:ss,SSS}] %M(%L) | %m%n
        0 0 0/2 * * ?
    

    
        
        
            
            
            
            
        
        
        
        
            
                ${pattern}
            
            
                
                
                
                
            
            
            
            
        
        
        
            
            
            
            
                ${pattern}
            
            
                
                
                
                
            
            
        
        
        
            
            
            
                ${pattern}
            
            
                
                
                
                
            
        
        
        
            
                [%d{yyyy-MM-dd HH:mm:ss,SSS}] [%t] [%p] [%c] - %m%n
            
            
                
                
                
                
            
        
    

    
        
            
            
            
        
        
            
            
            
        
        
            
            
            
        
        
            
            
            
        
        
            
            
            
        
        
            
            
            
        
        
            
            
        
        
            
            
            
        
        
            
            
            
        
        
            
            
            
        
        
            
            
            
        
        
            
            
            
        
        
            
            
            
        
        
            
            
            
        
        
            
            
            
        
        
            
            
            
            
        
    



你可能感兴趣的:(Java)