日志配置
上述是日志的使用,日志框架支持我们更灵活的输出日志,包括内容、格式等。
配置日志级别
日志级别配置只需要在配置文件中设置"logging.level
"配置项即可,如下所示:
yml 配置
logging:
level:
root: debug
重新运行上述代码,观察结果
分目录指定级别
:
-
Spring 只会打印等于或高于
默认日志级别
的日志级别
; -
如果我们想要打印
某一个文件
低于默认日志级别
的日志,可以使用分目录单独指定这个文件的默认日志级别:
日志持久化
以上的日志都是输出在控制台上的,但在线上环境中,我们需要把日志保存下来,以便出现问题之后追溯问题。
把日志保存下来就叫持久化
。
日志持久化有两种方式:
- 配置日志文件名
- 配置日志的存储目录
Common Application Properties :: Spring Boot我们打开官网,找到 logger 相关的配置
配置日志文件的路径和文件名 |
yml 配置
# 设置日志文件的文件名
logging:
file:
name: log.log
后面可以跟绝对路径或者相对路径
配置好文件后,我们重新运行程序,再刷新一下硬盘,会发现 idea 生成了一个 log.log 的文件:
我们在配置文件中指定一下绝对路径,就是指相对于当前项目的路径(相对路径会出现 D盘/…)
重新启动项目,刷新一下硬盘,运行结果显示,相对于当前项目新创建了一个 log 包,包中存放着指定名称的日志文件,该文件存放日志内容:
配置日志文件的保存路径 |
YAML 格式:
logging:
file:
path: "D:/temp"
这种方式只能设置日志的路径,文件名为固定的 spring.log
运行程序,该路径下多出一个日志文件:spring.log
注意:
logging.file.name
和logging.file.path
两个都配置的情况下,只生效其一;
以logging.file.name
为准,也就是无论配置的先后顺序,都只生效logging.file.name
日志文件分割
如果我们的日志都放在一个文件中,随着项目的运行,日志文件会越来越大,需要对日志文件进行分割。
当然,日志框架也帮我们考虑到了这一点,所以如果不进行配置,就走自动配置
默认日志文件超过10M就进行分割
配置日志文件分割 |
YAML 配置
logging:
logback:
rollingpolicy:
max-file-size: 1KB
file-name-pattern: ${LOG_FILE}.%d{yyyy-MM-dd}.%i
- 日志文件超过1KB就分割(设置1KB是为了更好展示。企业开发通常设置为200M、500M等,此处没有明确标准)
- 分割后的日志文件名为:日志名.日期.索引
项目运行,多打印一些日志,然后刷新硬盘,日志分割结果:
注意:分割的日志不会一个按照指定的分割大小来分割,比如上面的 1KB,打满 1KB 后,还会继续打印完一整行日志剩下的内容,才会分割下一个文件,这样的机制保证了日志的完整性
;
我们可以指定日志分割后的文件名称格式:
配置日志颜色
目前日志打印的格式是默认的
设置了颜色,却没有生效?
需要配置,让idea支持控制台颜色显示
- 打开启动配置,添加
VM options
- 添加 VM options
-Dspring.output.ansi.enabled=ALWAYS
- 重新启动程序,就发现控制台支持颜色了
更简单的日志输出
每次都使用LoggerFactory.getLogger(xxx.class)
很繁琐,且每个类都添加一遍,lombok
给我们提供了一种更简单的方式。
-
添加
lombok
框架支持 -
使用
@slf4j
注解输出日志。
添加 lombok 依赖
Maven 依赖配置
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
输出日志
lombok提供的@Slf4j
会帮我们提供一个日志对象log,我们直接使用就可以 :
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.RestController;
@Slf4j
@RestController
public class LogController {
public void log(){
log.info("--------------要输出日志的内容----------------");
}
}
lombok
提供的@Slf4j
会帮我们提供一个日志对象 log
,我们直接使用就可以.
总结
-
日志是程序中的重要组成部分,使用日志可以快速的发现和定位问题;
-
Spring Boot 内容了日志框架,默认情况下使用的是info日志级别将日志输出到控制台的;
-
我们可以通过
lombok
提供的@Slf4j
注解和log 对象
快速的打印自定义日志
。 -
日志包含
6个级别
,日志级别越高,收到的日志信息也就越少; -
我们可以通过配置日志的
保存名称
或保存目录
来将日志持久化
。