本篇进行日志的学习以及lombok的更多使用
文章目录
日志的使用
日志有什么用?
日志是程序的重要组成部分。日志对于我们来说,最主要的用途就是排除和定位问题。
除了发现和定位问题之外,我们还可以通过日志实现以下功能:
- 记录⽤户登录日志,方便分析⽤户是正常登录还是恶意破解用户。
- 记录系统的操作日志,方便数据恢复和定位操作人。
- 记录程序的执行时间,方便为以后优化程序提供数据⽀持。
以上这些都是日志提供的非常实用的功能。
日志的种类:
- 记录错误日志和警告日志(发现和定位问题)
- 记录用户日志
- 系统日志
- 程序执行日志
日志怎么用
首先:
Spring Boot 内置了日志框架(不然也输出不了日志)。
默认情况下,输出的日志并非是开发者定义和打印的,那开发者怎么在程序中自定义打印日志呢?
日志默认是打印在控制台上的,而控制台的日志是不能被保存的,那么怎么把日志永久的保存下来呢?
自定义日志
开发者⾃定义打印⽇志的实现步骤:
- 在程序中得到⽇志对象。
- 使⽤⽇志对象的相关语法输出要打印的内容
日志门面(Logging Facade)->commons-logging和SLF4J(由SLF4J决定使用下面哪个框架)
日志实现-> log4j 1/2 JUL logback
实现自定义的日志打印
Spring Boot 日志打印:
- 得到日志对象
- 使用日志对象提供的方法打印日志
日志属于类而不是属于方法所有写到类中,而一个日志对应一个类,所有使用private,为了可以在方法中直接调用,使用static,不修改使用final,在选择时,选择slf4j
示例代码:
//1.得到日志对象
private static final Logger log = LoggerFactory.getLogger(TestController.class);
public void doPostConstruct(){//在方法中打印
log.trace("trace");
log.debug("debug");
log.info("info");
log.warn("warn");
log.error("error");
}
查看结果:
默认的显示INFO级别以上的,以下的不显示
日志级别
日志级别有什么作用:
日志级别可以帮你筛选出重要的信息,⽐如设置⽇志级别为 error,那么就可以只看程序的报错日志了,对于普通的调试日志和业务日志就可以忽略了,从而节省开发者信息筛选的时间。
日志级别可以控制不同环境下,⼀个程序是否需要打印日志,如开发环境我们需要很详细的信息,
而生产环境为了保证性能和安全性就会输⼊尽量少的日志,⽽通过日志的级别就可以实现此需求。
日志级别的分类和使用
日志的级别分为:
trace:微量,少许的意思,级别最低;
debug:需要调试时候的关键信息打印;
info:普通的打印信息(默认日志级别);
warn:警告,不影响使用,但需要注意的问题;
error:错误信息,级别较⾼的错误日志信息;
fatal:致命的,因为代码异常导致程序退出执行的事件。
越往上接收到的消息就越少,如设置了 warn 就只能收到 warn、error、fatal 级别的⽇志了。
日志级别的设置
日志级别配置只需要在配置文件中设置“logging.level”配置项即可
#日志级别配置
logging:
level:
root: error
com:#日志精细化
example:
demo: trace
spring boot日志持久化
日志都是输出在控制台上的,然而在生产环境上咱们需要将日志保存下来,以便出现问题之后追溯问题,把日志保存下来的过程就叫做持久化。
想要将日志进行持久化,只需要在配置文件中指定日志的存储目录或者是指定日志保存文件名之后。
Spring Boot 就会将控制台的日志写到相应的目录或文件下了。
- 设置日志的保存路径
配置日志文件的保存路径:
#日志保存路径(1.不要将保存的日志保存在c盘。2。路径不要出现中文和空格)
logging:
file:
path: D:\\JAVA\\
-
会在文件夹内创建一个spring.log的文件
结论:日志文件一旦产生,那么日志文件及其内容就会永久的保存,不会出现文件或内容的丢失,无论任何操作都会保持其以上特性 -
配置日志文件的文件名:
#可以直接设置位置以及日志名字
logging:
file:
name: D:\\JAVA\\springboot.log
生产级别日志分类:
1.程序运行日志(存放在文件中)
2.业务日志(存放在数据库)
在日志增多,springboot会自动进行分割,当一个日志文件超过10mb以后,会自动创建一个新的日志文件用来存储
更加的简单实现日志-lombok
-
添加 lombok 依赖
这里可以直接使用插件EditStarters来进行添加 -
使用注解
@Slf4j//给当前类中添加一个叫做log的日志对象(就是SLF4J里面提供Logger)
更加简单的实现
log.info("log的 info");
log.error("log的 error");
lombok的更多学习
lombok是编译时期运行的,在运行是注释转化为字节码进行运行。在我们查看字节码文件时并没有发现lomok的注解,而是在编译期间进行了转化。
Lombok更多注解说明
基本注解:
组合注解:
日志注解: