目录
1. 🔍日志有什么用?
🚗 1. 最重要的作用就是排除和定位问题。
🚗 2. 通过登录日志,方便分析用户是否正常登录还是恶意破解用户。
🚗 3. 记录系统的操作日志,方便数据恢复和定位操作人。
🚗 4. 记录程序的执行时间,方便为以后优化程序提供数据支持。
2. 🔍自定义日志打印
Spring Boot 项目在启动的时候默认就有日志的输出
🚗 1. Spring Boot 内置了日志框架。
🚗 2. 默认情况下,输出的日志并不是开发者定义和打印的。
🚗 3. 日志默认是在控制台上打印的,并不能保存。
默认情况下,日志是自动打印的,开发人员也是能够自己打印日志的。
自定义打印日志实现的步骤:
🚗 1. 在程序中得到日志对象。
🚗 2. 使用日志独享的相关语法输出要打印的内容。
2.1 🚀在程序中得到日志对象
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Controller;
@Controller
public class UserController {
//1. 先得到日志打印对象
private static Logger log = LoggerFactory.getLogger(UserController.class);
}
⽇志⼯⼚需要将每个类的类型传递进去,这样我们才知道⽇志的归属类,才能更⽅便、更直观的定位到问题类。
注意:Logger 对象是属于 org.slf4j 包下的
3.2 🚀使用日志对象打印日志
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
/**
* @program: springboot-2
* @description:
* @author: DRY
* @create: 2022-07-11 14:15
**/
@Controller
public class UserController {
//1. 先得到日志打印对象
private static Logger log = LoggerFactory.getLogger(UserController.class);
@RequestMapping("/sayHi")
@ResponseBody //返回一个非静态页面数据
public String sayHi(String name) {
// 2. 打印日志
log.trace("我是 trace ");
log.debug("我是 debug ");
log.info("我是 info ");
log.warn("我是 warn ");
log.error("我是 error ");
return "你好:" + name;
}
}
打印效果:
3. 🔍日志级别
3.1 🚀日志级别有什么用?
🚗 1. 日志级别就是为了筛选符合目标的日志信息。比如设置日志级别为error ,南无就可以只看程序的报错日志了,普通的日志和业务日志就可以忽略。
🚗 2. 日志级别可以控制不同环境下,一个程序是否需要打印日志。
3.2 🚀日志级别的分类
日志的级别为:
日志执行顺序(1-6级别从低到高,越往下收到的消息越多)
🚗 1. trace:微量,少许,级别最低;
🚗 2. debug:需要调试时候的关键信息打印
🚗 3. info:普通的打印信息
🚗 4. warn:警告,不影响使用,但有需要注意的问题
🚗 5. error:错误信息,级别较高的错误日志信息
🚗 6. fatal:致命的,因代码异常导致程序退出执行的事件
3.3 🚀日志级别的使用
日志级别精确化设置:
4. 🔍日志持久化
将日志永久的保存到磁盘
🚗 1. 在配置文件中设置日志的保存目录
🚗 2. 在配置文件中设置日志的保存文件名
4.1 🚀保存目录
application.properties中设置:
application.yml中设置:
4.2 🚀保存名称
application.properties中设置:
application.yml中设置:
5. 🔍lombok -- 日志输出
每次都使⽤ LoggerFactory.getLogger(xxx.class) 很繁琐,且每个类都添加⼀遍,比较麻烦,可以使⽤ lombok 来更简单的输出日志。(但是没有办法去调试)
添加lombok :
lombok导入成功
也可以直接导入lombok依赖。
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
@Slf4j //相当于LoggerFactory.getLogger(UserController.class)
public class StudentController {
@RequestMapping("/sayhi2")
public String sayHi2() {
log.info("student 里面的info");
log.warn("student 里面的warn");
log.error("student 里面的error");
return "你好:student ";
}
}