SLF4J 对其他日志实现类的之间的调用关系。
在maven 工程中查看引入依赖之间的关系图:
日志不仅可以在控制台显示,还能将日志信息打印到指定文件中
logging.file 和logging.path 是两个冲突设置,两个同时设置的话,只有logging.file 配置生效
SpringBooot 的日志默认配置信息:
所有的日志包都在logging 包下
logback 的基本配置都在base.xml 和default.xml 中
当点击进配置文件中配置的logging 相关配置时:
会进入到一个Listener 类中
Listener 类中的属性都会封装到ListenerSystemProperties:
然后拿到环境解析器,解析Listener 中的属性。
解析完以后在配置文件中就能取出对应数据
在Listener 中是利用字符串常量来作为key ,将我们配置文件中的配置值作为value,保存在map 中。所以取也是以key 来取
在base.xml 中定义了给控制台输出用console-appender.xml 的配置文件。给文件输出用file-appender.xml 配置文件
这个值也是从我们配置文件中进行配置的,如果没有配置这个值,就用默认的。
。
file-appender.xml 中配置了滚动输出,即输出的信息是具滚动信息的、
但是这些配置还不够,有一些配置是它本身没有的,需要我们自己配置的。
所以如何写一个日志配置文件。
使用不同的日志实现,对应的不同配置文件
日志配置文件取名:logback.xml 这个会被日志框架直接识别,而跳过SpringBoot 识别。如果取名成logback-spring.xml,那么就能被SprngBoot 识别,然后使用SpringBoot 的功能:根据不用环境,更换日志配置。
这个logback.xml 可以从老师给的资料中获取。
如果命名为logback.xml 然后里面使用了SpringBoot 的配置,那么就会报错:
切换日志框架:
SpringBoot 默认使用:Slf4j + logback。 当我们想使用其他的日志框架比如: log4j 时,该如何切换?
我们得按照Slf4j 的官方提供的适配图来进行配置:
因为Slf4j 本身不兼容log4j,所以所以要先覆盖掉slf4j 之前的配置,再配置一个slf4j 的,再配置Log4j 的时候还要配置一个Log4j 的适配包:slf4j-api.jar
所以logback 的配置包就可以去掉了:
来依赖图中进行依赖Exclude,在pom 文件中就能帮我们从logging 依赖中Exclude 掉这个logback 组件。
还得把log4j 替换成slf4j 的替换包给它去掉,这个包用的包结构是log4j 的,但是里面的实现返回是slf4j的。也就是本质还是slf4j 的日志信息。
最后引入slf4j 适配log4j 的包
在类路径下配置log4j 的配置文件。
不过log4j 切换成logback 是没意义的(就是因为log4j 不好才有的logback),主要是看这个切换的过程。
还可以直接切换SpringBoot 日志框架:
比如spring-boot-starter-logging(spring-boot默认) ,切换成spring-boot-starter-log4j2。
不要log4j 在slf4j 中适配的各种包了
不要spring-boot-starter-logging 依赖
然后编写log4j2-spring.xml 的时候就能用到SpringBoot 的配置了。