本篇意为说明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的日志对象。

最新文章

  1. 在Winform开发中使用日程控件XtraScheduler(2)--深入理解数据的存储
  2. history 清空历史记录 或 history不记录历史命令
  3. 使用SignalR+Asp.net创建实时聊天应用程序
  4. 在MacBook Air 上装Win10的,反反复复的失败过程。
  5. ajax请求模拟登录
  6. mac 下隐藏和显示文件
  7. c# -- 读取文件夹中的所有文件(备忘)
  8. usaco3.33Camelot(BFS)
  9. 犯罪团伙 codevs 3554
  10. Whitelabel Error Page 专题
  11. 一个完整的hadoop程序开发过程
  12. 清楚理解const_cast类型转换
  13. A1036. Boys vs Girls
  14. Qt的QVariant类
  15. vue 中router.go、router.push和router.replace的区别
  16. CentOS 下搭建Gitlab
  17. pandas汇总和计算描述统计
  18. error info: boost not variable 问题解决
  19. 游戏服务器框架:Leaf/go
  20. bootstrap Table的使用方法

热门文章

  1. jupyter notebook代码无法运行
  2. 关于centos防火墙的一些问题
  3. COM三大接口:IUnknown、IClassFactory、IDispatch。
  4. Python下使用argparse模块的脚本参数配置
  5. AspectRatio、Card 卡片组件
  6. 使用supervisor 管理 laravel 框架中的进程
  7. Linux 压测及监控工具Nmon
  8. memoのls
  9. 博弈论[leetocde913]
  10. php excel导出列超过26个字母处理