目录
1. 日志有什么用?
2. 日志的使用
2.1 得到日志对象
2.2 使用日志对象打印日志
3. 日志级别
3.1 日志级别的用途
3.2 日志级别的分类和使用
3.3 日志的打印规则
3.4 日志级别的设置
4. 日志持久化
5. 更简单的日志输出--lombok
6. 拓展1 lombok的原理
7. 拓展2 lombok更多的注解说明
1. 日志有什么用?
日志.是程序的重要组成部分,想象⼀下,如果程序报错了,不让你打开控制台看日志,那么你能找到报错的原因吗?
答案是否定的,写程序不是买彩票,不能完全靠猜,因此⽇志对于我们来说,最主要的用途就是排除和定位问题。
除了发现和定位问题之外,我们还可以通过日志实现以下功能:
- 记录用户登录日志,方便分析用户是正常登录还是恶意破解用户。
- 记录系统的操作日志,方便数据恢复和定位操作⼈。
- 记录程序的执行时间,方便为以后优化程序提供数据支持。
2. 日志的使用
Spring Boot 项目在启动的时候默认就有日志输出,如下图所示:
自定义打印日志
开发者自定义打印日志的实现步骤:
- 在程序中得到日志对象。
- 使用日志对象的相关语法输出要打印的内容。
2.1 得到日志对象
在程序中获取日志对象需要使用日志工厂 LoggerFactory,如下代码所示:
日志工厂的使用得将类对象传入,这样我们就可以检测到日志的归属类,这样就可以直观的定位到问题类.
2.2 使用日志对象打印日志
控制台得到日志
3. 日志级别
3.1 日志级别的用途
- 日志级别可以帮你筛选出重要的信息,比如设置日志级别为 error,那么就可以只看程序的报错日志了,对于普通的调试日志和业务日志就可以忽略了,从而节省开发者信息筛选的时间。
- 日志级别可以控制不同环境下,⼀个程序是否需要打印日志,如开发环境我们需要很详细的信息,而生产环境为了保证性能和安全性就会输⼊尽量少的日志,而通过日志的级别就可以实现此需求。
3.2 日志级别的分类和使用
trace | 微量,少许的意思,级别最低 |
debug | 需要调试的时候的关键信息打印 |
info | 普通的打印信息(默认) |
warn | 警告,不影响使用,但需要注意的问题 |
error | 错误信息,级别比较高的日志信息 |
fatal | 致命的,因为代码异常导致程序退出执行 |
3.3 日志的打印规则
3.4 日志级别的设置
我们设置日志的级别,在配置文件中进行设置选项即可:
4. 日志持久化
我们之前通过使用PostConstruct方法中使用 System.out.println();进行打印,那么这种打印日志相对于使用logger对象打印有什么缺点吗?
根据前面的分析我们很容易验证了前两条,在持久化这一方面也是有重大的缺陷.
那么我们可以在配置文件中进行设置选项设置日志保存的路径.
5. 更简单的日志输出--lombok
我们每次都要获取logger对象的时候,都需要将当前类的类对象作为参数进行传入,这样做事很繁琐的.
我们这里使用lombok中的注解@slf4j进行注解类.
我们在之前就使用过lombok,给类进行设置@Data注解,就相当于给成员变量设置了get set 方法以及toString方法hashCode方法.
我们在pom.xml中引入lombok
6. 拓展1 lombok的原理
我们在文件的目录里面可以找到target这个目录,这个目录是IDEA将我们编写的.cjava文件编译成字节码文件(.class),交给JVM进行操作.
我们发现在字节码文件中,@Slf4j的注解不见了,我们的代码有还原成就使用LoggerFactory进行获取log对象了.
整个操作如图所示: