目录
1.SpringBoot中的日志框架简单原理
SpringBoot之所以可以自动适配各种日志框架,是因为它的内部逻辑依赖了不同的jar包,其依赖关系,你们也可以自己在idea中查看依赖关系树,这里我提供一个简单的图示:
通过上图可发现SpringBoot的日志抽象层是slf4j,其日志具体实现是通过各个日志框架;另外,我们可以看到SpringBoot通过log4j-to-slf4j.jar来适配log4j日志框架,通过jul-to-slf4j来适配jul日志框架,所以,当你需要使用log4j日志框架的时候,你就要引入log4j-to-slf4j.jar
而SpringBoot默认采用的是slf4j(抽象)+logback(实现),logback是log4j的新开发框架,而且天然支持slf4j,其性能上的优越,就不多说了,这个组合在当下非常合适,SpringBoot还是很机智的。
2.日志框架的使用
2.1采用默认日志框架slf4j+logback
2.1.1导入依赖
首先在pom文件中引入依赖如下
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-logging</artifactId>
</dependency>
其实在实际开发中不需要直接添加该依赖,因为在spring-boot-starter中包含了spring-boot-starter-logging,而该依赖默认为slf4j+logback;现在大多数的开发都为web开发,也可以直接引入spring-boot-starter-web,该依赖包含spring-boot-start,另外给大家拓展一下,spring-boot-starter-web依赖还包含tomcat依赖和mvc和jackson的依赖,前两个不用多说,大家都懂,最后这个依赖正解释了Springboot的web开发用Responsebody注解时,可以不用再添加josn相关依赖就能直接返回json格式结果的问题
我就拿web项目为例了,在pom文件直接导入依赖(只展示跟日志有关的依赖):
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
此时便可以直接使用日志了
2.1.2 日志的简单使用
1. 直接上图了,这是最简单的日志使用的方法,而这种将Logger作为成员变量声明然后去使用的方法还可以通过@Slf4j注解代替,后续再谈。
2. Logger是 org.slf4j.Logger类型,上面提到过,在SpringBoot中调用的是日志抽象层slf4j的api,具体实现则是通过具体的日志框架例如logback实现了org.slf4j.Logger的info方法。
3. Logback日志级别从低到高分别为trace、debug、info、warn、error,默认情况下,只输出info及以上的,trace、debug级别的不输出,所以上图只有三个级别的日志打印在了控制台。
2.2 使用其他日志框架,以slf4j+log4j为例
2.2.1 导入依赖
因为Springboot默认采用了logback框架,所以我们选择使用其他框架的时候首先要将Springboot默认的框架屏蔽掉,如下:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<exclusions>
<!-- 排除自带的logback依赖 -->
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-logging</artifactId>
</exclusion>
</exclusions>
</dependency>
然后导入log4j依赖,别忘了要把 slf4j的依赖和log4j-to-slf4j.jar导入,如下:
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.21</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.7.21</version>
</dependency>
此时就可以使用slf4j+log4j啦
2.2.2 简单使用
1. 简单配置log4j.properties
log4j.rootLogger=INFO, stdout
##################################
log4j.appender.stdout = org.apache.log4j.ConsoleAppender #控制台
log4j.appender.stdout.layout = org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern = %d{DATE}%-4r[%t]%-5p%c%x-%m%n #输出格式
2. 跟2.1.2一样使用,如下图所示:
3.结语
到这里,SpringBoot日志框架的简单介绍就结束了,本文只介绍了简单的原理及最基本的使用,深层次的介绍例如logback、log4j配置文件的详细介绍后续再谈,本篇文章就不涉及了。感兴趣的小伙伴可以百度搜索日志框架配置文件详解啦~~