文章目录:一.日志的作用
二.日志的使用(1)系统默认日志输出
(2)自定义日志输出
三.日志级别的分类 (1)默认级别
(2)自定义级别
四.日志的持久化 (1)指定日志存储目录
(2)指定日志保存文件名
五.更简单的方式的日志输出(1)添加lombok依赖
(2)类外添加@Slf4j
(3)Lombok原理解释
一.SpringBoot的日志的作用:
(1)如果程序出现bug,通过日志,可以更好的定位和排查问题
(2) 记录用户登录日志,可用户分析是否是正常用户还是恶意破解用户
(3) 记录系统操作日志,可以更好地恢复数据和定位操作人
(4) 记录程序执行的时间,为优化数据提供支持
二.日志的使用
SpringBoot项目内置了框架,项目启动时就会默认日志输出
我们如何自定义日志呢?
首先呢?我们先通过Logger类来获取日志对象
private static final Logger log=LoggerFactory.getLogger(Hello.class)
把这个对象设置为final就防止类外这个对象被修改了
然后我们通过log这个对象来调用各种打印方法
@RestController
@ResponseBody
public class Hello {
private static final Logger log=LoggerFactory.getLogger(Hello.class);
@PostConstruct
public void doPostConstruct() {
log.trace("trace");
log.debug("debug");
log.info("info");
log.warn("warn");
log.error("erro");
}
}
我们发现trace、degug并没有打印,这是为什么呢?这里就涉及到日志级别问题了
三.日志级别的分类:
1.trace :微量,少许的意思,级别最低
2.debug:调试的时候打印关键信息
3.info: 普通的打印信息(默认日志级别)
4.warn: 打印警告信息
5.error: 打印错误信息
6.fatal: 致命错误,代码异常导致程序退出执行
日志级别的顺序:
打印日志的时候只会打印当前日志级别及以上的信息,我们默认的是Info级别,所以上文中打印的时候就不会打印 trace和debug了。
那么我们可不可以设置日志级别呢?其实是可以的
我们可以在配置文件里设置日志级别:
logging:
level:
root: warn
当我们设置为warn的时候 我们再来看一下日志的打印信息
我们看到只能打印warn和error了
而且日志级别的设置可以具体到包:
logging:
level:
root: warn
com.example.demo:
controller: trace
text: info
这里表示com.example.demo包底下的子包controller里面的类日志级别为trace、com.example.demo包底下的子包trext里面的类的级别设置为text
四.日志持久化:我们看到以上的信息都是输出在控制台上,在生产环境上我们需要把它长久下的保存下来 。
想要日志持久化:我们需要在配置文件里指定日志的存储目录或指定日志保存文件名
(1)指定日志的存储目录
当我们运行这个项目后我们会发现生成一个spring文件
里面就存放着具体的日志信息
(2)指定日志保存文件名
logging:
level:
root: warn
com.example.demo:
controller: trace
text: info
file:
path: D://123//student//
name: D://123//student//spring-boot.log
五.更简单的日志输出:
1.添加lombok依赖
2.类外添加@Slf4j
3.Lombok原理解释
我们找到target文件
我们发现字节码文件里多了一行
这说明代码在编译的时候Lombok把log对象的声明放进了代码中
Lombok作用如下图:
我们再来看一下Lombok的一些其他注解
@Getter
@Setter
@ToString
@AllArgsConstructor
public class Student {
public String name;
public int age;
}
即使我们再类里面没有写getter、setter、toString()、构造方法
我们再打开对应的字节码 文件看一下
我们发现类里面对这些方法都有声明。