1.认识日志
日志是程序的重要组成部分,如果程序运行中出现错误,日志就是帮助我们找到错误原因的最好帮手。
日志除了可以帮助发现和定位问题外,还可以记录一些比较重要的信息,比如:用户登录日志、系统操作日志、程序启动时间等等。
2.日志如何使用
SpringBoot项目启动时,就会打印一些默认的日志,如图所示:
由此可知,SpringBoot时内置了日志框架的,所以才能打印到控制台。
默认情况下,打印的日志不是开发者定义和打印出来的。
日志默认打印到控制台,但是我们需要的是把日志保存为一种持久化的文件。
上述三点就是我们需要在使用日志时,需要做到的。
如上图所示,这个就是SpringBoot内置的日志框架。
日志门面就类似于一个代理,程序请求到SLF4J这个日志门面,这个日志门面再根据配置等选择哪个日志实现。
(1)SpringBoot日志打印
a.得到日志对象;
每一个类都有一个自己的日志对象,我们需要选择slf4j这个包下的Logger和LoggerFactory,我们使用日志工厂LoggerFactory创建Logger对象,使用方法getLogger时,可以传两种参数,名字和类两种,这里建议传类,这样日志打印出来的对象,就是这个类的全名,包括其路径。
b.使用日志对象提供的方法打印日志;
这里使用了日志对象的五个方法,其实就是日志的五个级别,我们启动一下项目。
目前只打印初info、warn、error这三个日志,因为默认级别是info,其只能打印出info级别及以上的内容。
现在查看打印出的日志,其给与了日志的打印时间、日志的级别、打印日志线程的id(11808)、类名的全称、日志信息。
3.日志级别
日志级别的作用就是帮助筛选出需要的日志。比如日志级别设置为error,我们就是只看程序的报错日志。
日志级别还可以控制不同环境下,一个程序是否需要日志,比如开发环境下需要很详细的日志,生产环境下只需要一小部分。
日志级别为:
trace:微量、少许,日志级别最低
debug:调试时的关键信息打印
info:普通日志打印,默认的日志级别
warn:警告,不影响使用,但需要注意
error:错误信息,级别较高的错误日志
fatal:致命的,因为代码异常导致程序执行退出
日志级别从上到下是由低到高。
那么如何设置日志级别呢?
日志级别只需要在配置文件中配置“logging.level”配置项即可,如图所示。
我们再次执行程序
现在只打印出了一个error日志,因为其他日志都比error的级别低。
在这个配置之下,我们还可以配置固定包下的日志。


4.日志持久化
上面的日志都是打印到控制台的,然而在生产环境下我们是需要将日志保存下来,以便于出现问题之后进行追溯,把日志保存下来的过程就叫做持久化。
想要将日志持久化,只需要在配置文件中,指定日志的保存目录,或者完整的保存文件名,SpringBoot就会自动将其保存。
设置文件的保存路径:
这里我们设置其日志的保存路径为“D:\test\lujin”,启动程序。
启动程序后,SpringBoot就会在路径下自动创建“spring.log”文件,并将日志写入。
设置文件的保存名称:
启动程序后,就可以在这个路径下找到这个文件名的日志文件。
日志文件一旦持久化,那么日志文及其内容就会永久的保存,不会出现丢失。
程序运行日志一般存放在文件中,而业务日志一般放到数据库中。
5.简化日志操作
目前我们的日志操作以及全部可以了,但是有一个问题就是比较复杂,每个类里面都得创建这样一个对象才能去输出日志。
首先要添加lombok依赖:
然后在类上添加@slf4j注解,使用注解后会给类提供log对象: