Spring Boot日志使用

这个是Spring Boot的启动器,我们点击spring-boot-starter

<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId> </dependency>

这个spring-boot-starter-logging就是Spring Boot用来做日志功能的

<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-logging</artifactId> </dependency>

底层依赖关系

Spring Boot日志使用

通过这张图我们能总结出

Spring Boot底层也是使用slf4j+logback的方式进行日志记录

Spring Boot也把其他的日志都替换成了slf4j;

那么Spring Boot是如何将这些日志都替换成slf4j的呢?我们找到其中的一个jcl-over-slf4j

Spring Boot日志使用

我们可以看到里面有个commons.logging,里面实现的正是SLF4JLogFactory

@SuppressWarnings("rawtypes") public abstract class LogFactory { static String UNSUPPORTED_OPERATION_IN_JCL_OVER_SLF4J = "http://www.slf4j.org/codes.html#unsupported_operation_in_jcl_over_slf4j"; static LogFactory logFactory = new SLF4JLogFactory();

那么我们如果要引入其它框架,一定要把这个框架的默认日志依赖移除掉。

Spring Boot用的是commons-logging

<dependency> <groupId>org.springframework</groupId> <artifactId>spring-core</artifactId> <exclusions> <exclusion> <groupId>commons-logging</groupId> <artifactId>commons-logging</artifactId> </exclusion> </exclusions> </dependency>

SpringBoot能自动适配所有的日志,而且底层使用slf4j+logback的方式记录日志,引入其他框架的时候,只需要把这个框架依赖的日志框架排除掉即可;

日志使用 默认配置

Spring Boot默认帮我们配置好了日志;日志有五种级别,由低到高是trace<debug<info<warn<error,可以调整输出的日志级别;日志就只会在这个级别及以后的高级别生效,Spring Boot默认给我们使用的是info级别的,没有指定级别的就用SpringBoot默认规定的级别;root级别

为什么也叫root级别呢,依次点击文件目录下的这些文件

graph LR A[External Libraries]-->B[springframework.boot.spring-boot] B-->C[org] C-->D[springframework] D-->E[boot] E-->F[logging] F-->G[logback] G-->H[base.xml]

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wpxpww.html