当前位置: 首页 > news >正文

【Spring】日志级别的分类和使用

文章目录

  • 介绍
  • 日志级别的分类
    • 日志级别的顺序
  • 日志级别的使用

介绍

日志级别代表着日志信息对应问题的严重性,为了更快的筛选符合目标的日志信息

试想一下这样的场景,假设你是一家 2 万人公司的老板,如果每个员工的日常工作和琐碎的信息都要反馈给你,那你一定无暇顾及。于是就有了组织架构,而组织架构就会分级,有很多的级别设置,如下图image.png

有了组织架构之后,就可以逐级别汇报消息了,例如:组员汇报给组长,组长汇报给研发一组,研发一组汇报给 Java 研发,等等依次进行汇报

日志级别大概是同样的道理,有了日志级别之后就可以过滤自己看到的信息了,比如只关注 Error 级别的,就可以根据级别过滤出相关日志信息,节约开发者的信息筛选时间

日志级别的分类

日志级别从到到底依次为:FATALERRORWARNINFODEBUGTRACE

  • FATAL致命信息,表示需要立即被处理的系统级错误
  • ERROR错误信息,级别较高的错误日志信息,但仍不影响系统的继续运行
  • WARN警告信息,不影响使用,但需要注意的问题
  • INFO普通信息,用于记录应用程序正常运行时的一些信息,例如系统启动完成,请求处理完成等
  • DEBUG调试信息,需要调试时候的关键嘻嘻打印
  • TRACE追踪信息,比 DEBUG 更细粒度的信息事件(除非有特殊用意,否则请用 DEBUG 级别替代)

日志级别通常和测试人员的 bug 级别没有关系

  • 日志级别是开发人员设置的,用来给开发人员看的。
  • 日志级别的正确设置,也与开发人员的工作经验有关。如果开发人员把 error 级别的日志设置成了 INFO,就很有可能会影响开发人员对项目运行情况的判断
  • 出现 error 级别的日志信息较多时,可能也没有任何问题。测试的 bug 级别更多是依据现象和影响范围来判断

日志级别的顺序

image.png

  • 级别越高,收到的消息越少

日志级别的使用

日志级别是开发人员自己设置的。开发人员根据自己的理解来判断该信息的重要程度

  • 类似公司管理,通常由领导来判断什么样的事情需要汇报,什么样的事情不需要汇报

针对这些级别,Logger 对象分别提供了对应的方法,来输出日志

@RequestMapping("/printLog")  
public String printLog(){  logger.trace("========trace========");  logger.debug("========debug========");  logger.info("========info========");  logger.warn("========warn========");  logger.error("========error========");  return "打印不同级别的日志";  
}

SpringBoot 默认的日志框架是 LogbackLogback 没有 FATAL 级别,它被映射到 ERROR

  • 出现 FATAL 日志,表示服务已经出现了某种程度的不可用,需要联系系统管理员紧急介入处理
  • 通常情况下,一个进程声明周期中应该最多只有依次 FATAL 记录

观察打印的结果:image.png

  • 结果发现,只打印了 infowarnerror 级别的日志
  • 这与日志级别的配置有关,日志的输出级别默认是 info 级别,所以只会打印大于等于此级别的日志,也就是 infowarnerror
http://www.lryc.cn/news/604128.html

相关文章:

  • Qt小技巧 QStandardPaths详解
  • C语言14-指针4-二维数组传参、指针数组传参、viod*指针
  • JAVA_TWENTY—ONE_单元测试+注解+反射
  • 在 Cloudflare 平台上完整部署 GitHub 项目 MoonTV 实现免费追剧流程
  • vite + chalk打印输出彩色命令行
  • 并查集介绍及典型应用和编程题
  • Python爬虫01_Requests第一血获取响应数据
  • __getattr__和 __getattribute__ 的用法
  • Docker学习相关视频笔记(二)
  • linux内核报错汇编分析
  • 云原生周刊:2025年的服务网格
  • JSON-RPC 2.0 规范
  • fastjson反序列化时_id的处理
  • WebRTC 2025全解析:从技术原理到商业落地
  • MC0241防火墙
  • 16大工程项目管理系统对比:开源与付费版本
  • 牛客网之华为机试题:密码验证程序
  • python-网络编程
  • Qt 移动应用性能优化策略
  • 板凳-------Mysql cookbook学习 (十二--------7)
  • Android User版本默认用test-keys,如何改用release-keys
  • 北方公司面试记录
  • 前端数据库:IndexedDB从基础到高级使用指南
  • 基于Prophet、滑动平均、加权平均的地铁客流量预测与可视化系统的设计与实现
  • Java【代码 17】httpclient PoolingHttpClientConnectionManager 连接池使用举例
  • 无穿戴动作捕捉技术:驱动历史活化、乐园叙事与教育沉浸的文旅利器
  • [Linux入门] Linux 部署本地 APT 仓库及 NFS 共享服务全攻略
  • 算法精讲:二分查找(一)—— 基础原理与实现
  • 7.28学习日志
  • ICT模拟零件测试方法--晶体管测试