目录
1、@condition深入分析
这里面就有一个匹配方法,就是一个条件判断的过程
所有condition注解的扩展
使用springboot的debug方式查看配置类的条件
没有匹配上的
2、springboot日志文件
左边选一个门面(抽象层)、右边来选一个实现;
左边我们基本上只能选择SLF4J,其他的基本上不常用
右边的话logback是log4j的升级版,而log4j是apache公司开发的,很多场景不兼容,所以最终选择logback(SLF4J和log4j和logback都是出至同一个人手中)
SpringBoot:底层是spring框架,spring框架默认是用JCL;
SpringBoot选用SLF4J和logback;
3.SLF4J使用
以后开发的时候,日志记录方法的调用,不应该来直接调用日志的实现类,而是调用日志抽象层里面的方法;
给系统里面导入slf4j的jar和logback的实现jar
SLF4J的实现原理图
SLF4J的遗留问题
Spring(commons-logging)、Hibernate(jboss-logging)、Mybatis
在不同项目组合的时候需要统一日志记录,让其他框架能够统一使用SLF4J
如何让系统中所有的日志都统一到slf4j
1、将系统中其他日志框架先排除出去;
2、用中间包来替换原有的日志框架;
3、我们导入slf4j其他的实现
4.springboot中日志关系
查看springboot的依赖关系UML类图
我们可以看出来springboot使用的日志是logback
总结:
1、springboot底层 也是使用slf4j+logback的方式进行日志记录
2、springboot也把其他的日志都替换成了slf4j;
3、中间替换包
查看底层日志
注意:如果我们要引入其他框架,一定要把这个框架默认日志依赖移除掉?
spring框架默认使用的是commons-logging,看下面我们就可以看到,不需要我们手动移除默认的,因为springboot底层已经帮我们移除了。
对于一些其他框架,需要吧这个框架依赖的日志框架移除掉就可以了。如上所示方式。
5.springboot中日志的使用
运行之后
说明springboot默认使用的是info级别的日志。(因为使用了info级别,后面比它级别高的都会被调用)
我们将某个包下的运行类改成其他的日志级别
控制日志输出
指定logging.file
控制台也会有打印信息
修改日志输出格式
在springboot中默认日志级别是INFO
当超过10m之后会自动创建新的新的日志文件,并且命名递增