目录
🍌 一.日志的作用
简单来说,日志就是记录程序中执行的过程,如果出现错误了,从日志中就可以很快的发现和定位问题,而除了这个很重要的发现和定位错误,还可以通过日志实现以下功能:
- 记录用户登录日志,方便分析用户是正常登录的缓释暴力破解的;
- 记录系统的操作日志,方便数据恢复和定位操作人;
- 记录程序的执行时间,方便为以后优化程序提供数据支持;
这些都是通过日志可以解决的事情,下面就看一下日志应该怎么使用!
🍌 二.怎么使用日志
其实每次启动Spring Boot项目的时候就已经有这些日志文件了,这是由于Spring Boot内部是内置了日志框架的,而且这写日志和System.out.println()是有本质区别的,一方面日志是有输出时间的,另一方面日志也是有级别的,下面先来看一下这些日志怎么样能自定义的打印出来:
🍓 1.自定义打印日志
🍉 1.1.获取日志对象
Spring Boot中内置了日志框架,而日志框架里面就存在日志对象,想要获得到日志对象,就可以通过日志工厂LoggerFactory(这里一定要选择日志框架Slf4j下的(门面模式:不管底层如何实现的,门面一定是这样来使用的,就像是一个代理(中间人)一样,Slf4j不是具体实现的,最终实现的一般是logback))
来进行获得:
private final static Logger log = LoggerFactory.getLogger(UserController.class);
通过后面类就可以知道这些日志是哪个类的日志!
🍉 1.2.使用日志对象提供的方法进行打印
然后通过日志对象的方法就可以进行打印了,而其方法有很多,就是分等级的,后面会进行详细介绍,这里先看一下有什么方法:
log.trace("我是trace");
log.debug("我是debug");
log.info("我是info");
log.warn("我是warn");
log.error("我是error");
简单看一下日志的这些信息是什么:
可以看到这些日志已经打印出来了,但是只打印了后三个,前两个没有被打印,这就是因为日志级别的原因了(默认是info),下面就来具体讲一下日志的级别!
🍓 2.日志级别
日志的级别就是为了筛选符合目标的日志信息的,而日志级别一般有以下几种:
- trace:少许(级别最低的);
- debug:调试日志;
- info:普通信息日志;
- warn:警告日志;
- error:错误日志;
- fatal:致命日志(系统自己输出的,不能自定义打印);
这里通过设置日志级别就可以看到此级别以上的日志,而不是所有的日志信息都进行获取
而想要设置日志的级别,就可以通过日志信息来进行设置:
设置全局日志为trace的时候就可以看到刚才的设置其他两个级别的日志也进行打印了:
这样全局日志的级别就设置成功了,而想要设置单个类的日志级别也是可以的:
而当同时设置全局和局部日志级别的时候,局部日志级别>全局日志级别!!
🍌 三.保存日志
上面可以看到日志信息都是打印在控制台的,而当服务器重启之后,前面的日志就消息了,再想看之前的报错日志就无法下手了,因此这里就需要把日志进行保存处理:
🍓 1.在配置文件中设置日志保存路径
当在配置文件中设置了保存日志的路径之后,日志就可以保存下来了
🍓 2.在配置文件中设置日志保存文件名
这样也可以将日志进行持久化保存
这样也是可以保存下来的!
🍌 四.更简单的实现自定义日志打印-lombok
🍓 1.添加lombok依赖
在pom.xml里面添加依赖:
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
🍓 2.输出日志
此时就不需要再使用LoggerFactory了,只需要一个注解@Slf4j就可以了:
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@Slf4j
@RestController
public class UserController {
//获取到日志对象
@RequestMapping("/func")
public void func(){
log.trace("我是trace");
log.debug("我是debug");
log.info("我是info");
log.warn("我是warn");
log.error("我是error");
}
}
也是可以正常实现的!
🍓 3.lombok原理
当打开idea里面字节码文件就知道了:
发现这里已经将@Slf4j直接转换成了和前面一样的写法,在编译的时候就会把用户的代码和lombok同时进行编译成字节码文件,然后才会在JVM里面进行加载和运行!
以上就是全部和日志相关的内容了!