(一)日志文件有什么用?
除了发现和定位问题之外,我们还可以通过日志实现以下功能:
记录用户登录日志,以便分析用户是正常登录还是恶意破解用户。
记录系统的操作日志,以便数据恢复和定位操作 。
记录程序的执行时间,以便为以后优化程序提供数据支持。
![](https://i-blog.csdnimg.cn/blog_migrate/6923b50589d9eba3e8b22fcfd542ca98.png)
以上内容就是 Spring Boot 输出的控制台日志信息。通过上述日志信息我们能发现以下 3个问题:
Spring Boot 内置了日志框架 (不然也输出不了日志)。
默认情况下,输出的日志并非是开发者定义和打印的,那开发者怎么在程序中自定义打印日志呢?
日志默认是打在控制台上的,而控制台的日志是不能被保存的,那么怎么把日志永久的保存下来呢?
同样是输出到控制台,为什么不使用sout,而要使用日志呢?
① 日志
(二)日志基础使用
注意:我们使用的是Logger 对象是属于 org.slf4j 包下的
日志工厂需要将每个类的类型传递进去,这样我们才知道日志的归属类,才能更方便定位问题。
Logger logger = LoggerFactory.getLogger(类名.class);
(三)日志相关基础概念
(1)日志说明
![](https://i-blog.csdnimg.cn/blog_migrate/8c98faf6402dd5699633d2d8d85a4ef1.png)
(2)日志级别
trace :微量,少许的意思,级别最低
debug :需要调试时候的关键信息打印
info :普通的打印信息 (默认日志级别)
warn :警告,不影响使用,但需要注意的问题
error :错误信息,级别较高的错误日志信息
fatal :致命的,因为代码异常导致程序退出执行的事件
(3)日志级别的设置
我们可以通过设置日志级别来让其只显示 自己想要的日志, 默认的日志级别的info
越往上接收到的消息就越少, 如设置了 warn 就只能收到 warn、error、fatal 级别的日志了。
![](https://i-blog.csdnimg.cn/blog_migrate/eb30c8c581737c16741a0f9d4506485c.png)
日志级别配置只需要在配置文件中设置“logging.level”配置项即可,如下所示:
logging:
level:
root: error
(四)日志持久化
日志不会文件过大,超过文件默认大小的时候,会自动再创建一个文件.
两种方案:
① 设置日志的保存目录
②设置日志的保存文件名
# ①设置日志文件的目录
logging:
file:
path: D:\\logs
# ②设置日志文件的文件名
# 如果只设置文件名,那么会放在项目路径下
# 可以设置路径+文件名
logging:
file:
name: D:\\logs\\springBoot0217.log
(五)更简单的日志输出:lombok
每次都使用 LoggerFactory.getLogger(xxx.class)很繁琐,且每个类都添加一遍,很麻烦,使用 lombok 可以来更简单的输出。
1.添加 lombok 框架支持
2.使用 @slf4i 注解输出日志
@RestController
@RequestMapping("/p")
@Slf4j //使用这个注解
public class PersonController {
@RequestMapping("/log")
public void loggerTest() {
log.error("------ error ------");
}
}
原理:
其实lombok,其实实际上没有改动什么,只是简化了我们写代码的方式
其实编译后的目标文件夹,内容还是之前麻烦的代码,而lombok改变的只是我们写代码的方式