SpringBoot —— 日志操作
-
概念
- 日志就像是我们日常生活中写的日记一样,只不过记录的是应用在运行时的一些报告而已,日志以文件的形式保存在硬盘上,方便管理项目以及bug定位
-
SpringBoot默认的日志框架
- 概念
- SpringBoot支持多种日志框架。通常情况下,这些日志都是由一个日志抽象层和一个日志实现层搭建而成的
- 日志抽象层是为记录日志提供的一条标准且规范的框架,其作用在于为记录日志提供接口
- 日志实现层是由日志抽象层实现的框架
- SpringBoot默认使用的日志抽象层是slf4j,默认使用的日志实现层是logback
- 概念
-
打印日志
-
概念
- 就是在控制台上输出日志文本
-
步骤
-
创建日志对象
private static final Logger logger = LoggerFactory.getLogger(Person.class);
Logger的对象必须通过LoggerFactory工厂类中的getLogger()方法予以创建;
创建日志对象的标准语法应该把Logger的对象修饰为private static final,以防止Logger的对象被其他外部类修改
-
-
示例
controller.TestController:
@RestController public class TestController { private static final Logger logger = LoggerFactory.getLogger(TestController.class); @RequestMapping("/test") public String test(String value1,String value2){ logger.info("进入test方法喽"); logger.info("value1={},value2={}",value1,value2); return "Are you ok?"; } }
-
-
解读日志
- 一般来说,SpringBoot的单行日志是这样的
- 时间戳
- 日志级别
- 进程编号(PID)
- 打印日志的线程名称
- 打印日志的类名
- 一般来说,SpringBoot的单行日志是这样的
-
保存日志
-
概念
- 正式的上线的项目时不会将日志输出到控制台上的,而是以文件的形式进行持久化存储
- 但是,日志文件不过过大,避免降低日志文件的使用效率
-
指定日志文件的生成位置
- application.properties配置文件中,添加logging.file.path配置项,即可指定日志文件的生成位置
- 如果想在当前项目根目录下的某个文件夹中生成日志文件,那么日志文件的生成位置将使用抽象路径
- 配置文件支持“\\”和“/”这两个路径分隔符
-
指定日志文件的生成名称
-
application.properties配置文件中,添加logging.file.name配置项,既可以指定这个日志文件的生成名称,也可以指定这个日志文件的生成位置
-
虽然name属性配置项的优先级要大于path属性配置项,但是name属性配置项可以引用path属性配置项的值
logging.file.path=logging logging.file.name=${logging.file.path}\\test.log
-
-
为日志文件添加约束
- 概念
- 随着项目的长时间运行,日志内容会越来越多,日志文件也越来越庞大。日志文件过大不仅挤占硬盘资源,而且会降低日志文件的可读性。所以,我们需要对日志文件进行约束
- 指定日志文件的最大保存天数
- application.properties配置文件中,添加logging.logback.rollingpolicy.max-history配置项,其值是数字,表示日志文件的最长保存天数(到期就删除)
- 指定日志文件的最大容量
- application.properties配置文件中,添加logging.logback.rollingpolicy.max-file-size配置项
- 如果日志文件超出了最大容量限制,日志框架就会将超出最大容量之前的内容打包成压缩包,超出最大容量之后的日志内容会生新的日志文件
- 启动项目自动压缩文件
- 如果项目运行一段时间后需要降低日志文件的最大容量限制,但是已经生成的日志文件已经大大超出了新的最大容量限制
- application.properties配置文件中,添加logging.logback.rollingpolicy.clean-history-on-start配置型,将其值设置成true,表示在项目启动时对原有日志文件做压缩归档操作
- 概念
-
-
调整日志
-
概念
- 我们不需要将所有的日志信息都输出到日志文件中,过多的日志内容不仅会降低系统性能,还会对硬盘存储造成不小的压力
-
设置日志级别
-
5种日志级别(优先级由高到低)
- ERROR
- 错误日志
- WARN
- 警告日志
- INFO
- 信息日志,通常指的是体现程序运行过程中值得强调的粗粒度信息,SpringBoot默认采用的日志级别
- DEBUG
- 调试日志,指的是程序运行过程中的细粒度信息
- TRACE
- 追踪日志,指的是一些给代码做提示、定位的信息,精细地展现代码当前的运行状态
- ERROR
-
示例
logging.level.[包或类名]=级别
这些东西idea都会有提示的
-
-
设置日志
- SpringBoot可以分别为控制台和日志文件设置独立的日志格式
- 用于设置控制台的日志格式的配置项为logging.pattern.console
- 用于设置日志文件的日志格式的配置项为logging.pattern.file
-
-
logback.xml配置文件
- 感兴趣的小伙伴去搞一下,反正我不是特别喜欢xml配置文件(json配置统一化就好了,哈哈)
- 如果logback.xml和application.properties文件都在resources文件夹下,那么logback.xml的优先级高于application.properties