1. 什么是日志文件
这个就是我们在控制台输出的日志信息
2. 日志文件的作用
?志是程序的重要组成部分,想象?下,如果程序报错了,不让你打开控制台看?志,那么你能找到
报错的原因吗?答案是否定的,写程序不是买彩票,不能完全靠猜,因此?志对于我们来说,最主要
的?途就是排除和定位问题。
当然日志在实际开发中还有许多功能:
- 当一个程序的用户登录日志突然暴增,就可能是有人暴力破解账号,可以快速排查
- 如果有人修改了数据不承认(或者忘了),记录的操作日志可以方便定位人和恢复数据
- 记录程序的执行时间,方便后续对程序进行优化
3. 自定义日志打印
需要两步操作:
- 在程序中得到?志对象。
- 使??志对象的相关语法输出要打印的内容
访问下这个页面
日志就打印出来了。
4. 日志级别
?志的级别分为:
- trace:微量,少许的意思,级别最低;
- debug:需要调试时候的关键信息打印;
- info:普通的打印信息;
- warn:警告,不影响使?,但需要注意的问题;
- error:错误信息,级别较?的错误?志信息;
- fatal:致命的,因为代码异常导致程序退出执?的事件(这个级别是不支持自定义打印的,是由系统来进行自动打印的)
注意: 因为日志级别默认是info级别的,所以低于此级别的日志是不会打印出来的,我们也可以设置日志默认级别。
运行后立即访问刚刚那个网站然后停止项目运行,否则你可能会找不到~
4.1 局部日志级别设置
yml写法
properties写法 :这个只是演示,后面我把这个删了,因为这个优先级高嘛,但是日常中我们使用yml其实更方便一点,因为有提示。
4.2 局部和全局的日志级别设置比较
这个似乎只能通过properties设置了,yml似乎会报错
经过比较得出局部日志级别优先级高于全局。
5. 日志持久化
以上的?志都是输出在控制台上的,然?在?产环境上咱们需要将?志保存下来,以便出现问题之后
追溯问题,把?志保存下来的过程就叫做持久化。
想要将?志进?持久化,只需要在配置?件中指定?志的存储?录或者是指定?志保存?件名之后,
Spring Boot 就会将控制台的?志写到相应的?录或?件下了。
配置?志?件的保存路径: 路径可使用\\ 或者一个/ .
重启一次后,在此观察日志文件:
可以看到日志是通过追加方式进行写文件的,而不是覆盖。默认一个日志文件大小是10mb. 当然我们也可以修改:
6. 更简单的输出日志文件
6.1 原理
在target目录下我们可以看到并没有@Slf4j而是变成了我们之前写的类似代码。
这是因为JVM并不认识Java代码,只认识.class文件,而target就是idea将源代码转成的二进制文件,只不过被idea包装了一
下,变成了让我们也能看的懂得Java代码。
因此我们可以得出一个过程:idea先将源代码转化为一个个字节码文件,再交由JVM处理。而这也给了lombok可乘之机,
在编译期就可以将一些注解生成想要的代码。
7. lombok更多注解
7.1 基本注解
注解 | 作? |
---|
@Getter | ?动添加 getter ?法 | @Setter | ?动添加 setter ?法 | @ToString | ?动添加 toString ?法 | @EqualsAndHashCode | ?动添加 equals 和 hashCode ?法 | @NoArgsConstructor | ?动添加?参构造?法 | @AllArgsConstructor | ?动添加全属性构造?法,顺序按照属性的定义顺序 | @NonNull | 属性不能为 null | @RequiredArgsConstructor | ?动添加必需属性的构造?法,final + @NonNull 的属性为必需 |
7.2组合注解
@Data | @Getter + @Setter + @ToString +@EqualsAndHashCode +@RequiredArgsConstructor +@NoArgsConstructor |
---|
7.3 日志注解
@Slf4j | 添加?个名为 log 的?志,使? slf4j |
---|
|