1. 简述
Spring Boot支持java.util.logging、Log4j、Logback等作为日志框架,其中,Logback作为默认日志框架。无论使用哪种日志框架,Spring Boot都支持配置将日志输出到控制台或者文件中。
1.1 日志框架
常见的日志框架: JUL、JCL、Jboss-logging、logback、log4j、log4j2、slf4j....
| 日志(接口层) | 日志实现 |
|---|---|
| JCL(Jakarta Commons Logging): 最后一次更新是2014年 SLF4j(Simple Logging Facade for Java) jboss-logging: 使用场景少 |
Log4j JUL(java.util.logging) Log4j2 Logback |
推荐使用日志接口:
SLF4j; 推荐使用日志实现层:Logback,SpringBoot默认也是使用SLF4J+Logback
2. Logback介绍
2.1 组成成员
logback-core: 属于Logback的基础模块,是其他两个模块的基础。logback-classic: 可以看作Log4j的改进版本,同时logback-classic自身实现了SLF4J API,使开发者可以在Logback框架与其他日志框架(如Log4j或java.util.logging)之间自由切换。logback-access: 与Servlet容器(如Tomcat和Jetty)集成,以提供HTTP访问日志功能。
2.2 日志级别
Logback的日志级别有: trace、debug、info、warn、error,
级别排序为:trace <debug <info < warn < error。
2.3 依赖引入
一般情况下,我们不需要单独引入spring-boot-starter-logging这个依赖了,因为这是spring-boot-starter默认引入的依赖其依赖如下:

从上面的依赖树,我们可以看出,
spring-boot-starter-logging依赖logback-classic, logback-classic依赖logback-core、sl4j-api。
3. 在SpringBoot中使用
3.1 基于记录器使用
|
运行输出:

原因:SpringBoot默认使用info级别。
解决方法: 通过logging.level设置;如下面配置
|
3.2 基于注解使用
如果每一个类都需要初始化一个Logger(记录器),不但会觉得很烦也会让别人觉得自己很low,幸好有个第三方插件(lombok)可以帮助我们做这些事,只需要使用lombok的@Slf4j注解即可。
1. 引入lombok
|
2. 使用
|
4.写入文件
默认情况下,Spring Boot只会将日志消息打印到控制台,并不会将日志写入日志文件。但是在实际项目中,一定会需要日志文件来分析程序。其实在Spring Boot工程中,想要输出控制台之外的日志文件很简单,只需要在application.properties文件或application.yml文件内设置logging.file.path或logging.file.name属性即可。
从SpringBoot2.2版本以后,logging.path 重命名为: logging.file.path ;logging.file 重命名为: logging.file.name
4.1 写入文件配置
logging.file.name: 设置日志文件,这里可以设置文件的绝对路径,也可以设置文件的相对路径,具体可以根据情况设置,如logging.file.name=test.log。logging.file.path: 设置日志目录,在设置好目录后,会在设置目录文件夹下创建一个spring.log,如设置logging.file.path=/Users/liuqh。
| logging.file.name | logging.file.path | Example | Description |
|---|---|---|---|
| (none) | (none) | 只在控制台输出 | |
| 指定文件名 | (none) | my.log | 输出日志到my.log文件 |
| (none) | 指定目录 | /var/log | 输出到指定目录的 spring.log 文件中 |
上述两个属性中,如果只设置一个,那么
Spring Boot应用会默认读取该配置;如果同时设置,那么只有logging.file.name会生效。
5. 输出格式
5.1 输出格式语法
|
5.2 基于SpringBoot配置
|







