SpringBoot之日志(十三)

日志介绍

1、具体日志功能的实现有以下几种

JUL

Log4j

Logback

Log4j2

 

Logback的实现类Logger,实现了slf4j的Logger接口

SpringBoot之日志(十三)_第1张图片

 

 

 

2、日志门面框架:

日志实现的抽象层,定义log的Info,debug这些方法。

JCL

SLF4J

如下图,SLF4J定义了一些trace,debug等方法

SpringBoot之日志(十三)_第2张图片

 

 

3、日志的发展历史

1) JDK1.3及以前,通过System.(out|err).pringln 打印,存在巨大缺陷。(如没有办法定制化,日志粒度不够细,没有日志级别等)

2) 解析系统打印缺陷问题出现log4j, 2015年8月停止更新

3)受到log4j影响,SUN公司推出java.util.logging即JUL

4)由于存在两个系统实现,解决兼容性问题,推出commons-logging(门面框架),即JCL,但存在一定的缺陷。(对log4J和JUL的配置兼容问题处理的不是很好。)

5)log4j作者推出slf4j(门面框架),功能完善兼容性好,成为业界主流

6)log4j作者在推出log4j后进行新的改进思考推出logback

7) log4j2对log4j的重大升级,修复移植缺陷,极大提升性能

综上所述,最佳组合 slf4j+ logback(springboot使用), slf4j+ log4j2

 

一般使用logger的方式为

private Logger logger = LoggerFactory.getLogger(MybatisStartTest.class);

进入getLogger

public static Logger getLogger(Class clazz) {

    Logger logger = getLogger(clazz.getName());

    if(DETECT_LOGGER_NAME_MISMATCH) {

        Class autoComputedCallingClass = Util.getCallingClass();

        if(autoComputedCallingClass != null && nonMatchingClasses(clazz, autoComputedCallingClass)) {

            Util.report(String.format("Detected logger name mismatch. Given name: \"%s\"; computed name: \"%s\".", new Object[]{logger.getName(), autoComputedCallingClass.getName()}));

            Util.report("See http://www.slf4j.org/codes.html#loggerNameMismatch for an explanation");

        }

    }


    return logger;

}

1、进入getLogger(clazz.getName());

public static Logger getLogger(String name) {

    ILoggerFactory iLoggerFactory = getILoggerFactory();

    return iLoggerFactory.getLogger(name);

}

 

2、进入getILoggerFactory

SpringBoot之日志(十三)_第3张图片

3、进入performInitialization方法

SpringBoot之日志(十三)_第4张图片

 

4、   进入bind方法

SpringBoot之日志(十三)_第5张图片

 

7. 如果存在多个日志框架打印提示及选择

 

5、然后进入findPossibleStaticLoggerBinderPathSet方法。获得StaticLoggerBinder所在jar包路径

SpringBoot之日志(十三)_第6张图片

 

6、将路径增加到staticLoggerBinderPathSet集合中。

SpringBoot之日志(十三)_第7张图片

 

这个就是log的寻址过程。

 

8、StaticLoggerBinder 这个类存在于logback中,通过这个类获得日志工厂再得实现。

SpringBoot之日志(十三)_第8张图片

 

 

你可能感兴趣的:(Spring,Boot)