文章目录
- 介绍
- 日志级别的分类
- 日志级别的顺序
- 日志级别的使用
介绍
日志级别代表着日志信息对应问题的严重性,为了更快的筛选符合目标的日志信息
试想一下这样的场景,假设你是一家 2 万人公司的老板,如果每个员工的日常工作和琐碎的信息都要反馈给你,那你一定无暇顾及。于是就有了组织架构,而组织架构就会分级,有很多的级别设置,如下图
有了组织架构之后,就可以逐级别汇报消息了,例如:组员汇报给组长,组长汇报给研发一组,研发一组汇报给 Java
研发,等等依次进行汇报
日志级别大概是同样的道理,有了日志级别之后就可以过滤自己看到的信息了,比如只关注 Error
级别的,就可以根据级别过滤出相关日志信息,节约开发者的信息筛选时间
日志级别的分类
日志级别从到到底依次为:FATAL
、ERROR
、WARN
、INFO
、DEBUG
、TRACE
FATAL
:致命信息,表示需要立即被处理的系统级错误ERROR
:错误信息,级别较高的错误日志信息,但仍不影响系统的继续运行WARN
:警告信息,不影响使用,但需要注意的问题INFO
:普通信息,用于记录应用程序正常运行时的一些信息,例如系统启动完成,请求处理完成等DEBUG
:调试信息,需要调试时候的关键嘻嘻打印TRACE
:追踪信息,比DEBUG
更细粒度的信息事件(除非有特殊用意,否则请用DEBUG
级别替代)
日志级别通常和测试人员的
bug
级别没有关系
- 日志级别是开发人员设置的,用来给开发人员看的。
- 日志级别的正确设置,也与开发人员的工作经验有关。如果开发人员把
error
级别的日志设置成了INFO
,就很有可能会影响开发人员对项目运行情况的判断- 出现
error
级别的日志信息较多时,可能也没有任何问题。测试的bug
级别更多是依据现象和影响范围来判断
日志级别的顺序
- 级别越高,收到的消息越少
日志级别的使用
日志级别是开发人员自己设置的。开发人员根据自己的理解来判断该信息的重要程度
- 类似公司管理,通常由领导来判断什么样的事情需要汇报,什么样的事情不需要汇报
针对这些级别,Logger
对象分别提供了对应的方法,来输出日志
@RequestMapping("/printLog")
public String printLog(){ logger.trace("========trace========"); logger.debug("========debug========"); logger.info("========info========"); logger.warn("========warn========"); logger.error("========error========"); return "打印不同级别的日志";
}
SpringBoot
默认的日志框架是 Logback
,Logback
没有 FATAL
级别,它被映射到 ERROR
- 出现
FATAL
日志,表示服务已经出现了某种程度的不可用,需要联系系统管理员紧急介入处理 - 通常情况下,一个进程声明周期中应该最多只有依次
FATAL
记录
观察打印的结果:
- 结果发现,只打印了
info
,warn
,error
级别的日志 - 这与日志级别的配置有关,日志的输出级别默认是
info
级别,所以只会打印大于等于此级别的日志,也就是info
,warn
和error