Spring日志与SpringBoot日志
2024-09-08 16:19:18
本篇意为说明Spring默认日志实现与SpringBoot默认日志实现。
1、日志
在这之前,我们应该先了解一些日志框架。
具体可以看我这篇随笔:https://www.cnblogs.com/daihang2366/p/15201347.html
你得了解JCL、SLF4J、JUL、LogBack。
2、Spring5.x
在Spring5.x中,默认日志实现为JCL+JUL(其他版本未验证)。
证明
打开Spring源码,随便找一个类中获取日志Log的属性。
进入其getLog方法中:
在进入下一层方法中:
进入JavaUtilDelegate.createLog方法中后就能发现其是使用的JUL。
那么Spring是如何根据我们的依赖项来切换日志实现的呢?
注意看,在LogFactory的静态代码块当中,尝试了初始化log4j、slf4j,如果有这些类,就设置其指定的值到logApi中,供getLog中switch方法使用,那么既然都使用slf4j桥接器了,那具体能使用哪种日志实现就很容易扩展了。
3、SpringBoot
在SpringBoot2.5.7中,默认日志实现为SLF4J+LogBack(其他版本未验证)。
进入LogFactory.getLog方法中查看:
再进入LogAdapter.createLog方法当中:
此时注意logApi的值为SLF4J_LAL,在spring5.x中logApi是没有值的,直接走进了default中,而default中则是使用JUL,这里可以看一个Slf4jAdapter.createLocationAwareLog方法中返回的是logBack。
可以看到,Log对象那个是Slf4J桥接器,实际其使用的log为logback的日志对象。
最新文章
- 在Winform开发中使用日程控件XtraScheduler(2)--深入理解数据的存储
- history 清空历史记录 或 history不记录历史命令
- 使用SignalR+Asp.net创建实时聊天应用程序
- 在MacBook Air 上装Win10的,反反复复的失败过程。
- ajax请求模拟登录
- mac 下隐藏和显示文件
- c# -- 读取文件夹中的所有文件(备忘)
- usaco3.33Camelot(BFS)
- 犯罪团伙 codevs 3554
- Whitelabel Error Page 专题
- 一个完整的hadoop程序开发过程
- 清楚理解const_cast类型转换
- A1036. Boys vs Girls
- Qt的QVariant类
- vue 中router.go、router.push和router.replace的区别
- CentOS 下搭建Gitlab
- pandas汇总和计算描述统计
- error info: boost not variable 问题解决
- 游戏服务器框架:Leaf/go
- bootstrap Table的使用方法