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

Spring日志与SpringBoot日志的更多相关文章

  1. ELK springboot日志收集

    一.安装elasticsearch 可以查看前篇博客 elasticsearch安装.elasticsearch-head 安装 二.安装 配置 logstash 1.安装logstash 下载地址: ...

  2. springboot日志

    1.日志 Spring Boot内部日志系统使用的是Commons Logging,但开放底层的日志实现.默认为会Java Util Logging, Log4J, Log4J2和Logback提供配 ...

  3. Spring Boot Logback应用日志

    e Spring Boot Logback应用日志 2015-09-08 19:57 7673人阅读 评论(0) 收藏 举报 . 分类: Spring Boot(51) . 目录(?)[+] 日志对于 ...

  4. SpringBoot实用小技巧之动态设置SpringBoot日志级别

    有时线上问题我们用打日志的方式来观察错误或埋点参数,但由于这些日志如果都打出来会占用大量存储空间而且覆盖了一些有效信息,所以线上级别一般设置INFO,调试级别用作特殊情况下.此时如果线上想查看调试级别 ...

  5. springboot启动的时候日志缺少Mapping日志等

    发现启动springboot日志不全 缺失启动日志如: 正常启动日志 解决办法: 更换较低版本的spring boot父级依赖. <parent> <groupId>org.s ...

  6. springboot 日志【转】【补】

    市面上的日志框架 日志门面 (日志的抽象层) 日志实现 JCL(Jakarta Commons Logging)(2014) SLF4j(Simple Logging Facade for Java) ...

  7. 【docker】docker部署spring boot服务,但是docker logs查看容器输出控制台日志,没有日志打印,日志未打印,docker logs不打印容器日志

    如题: docker部署spring boot服务,但是docker logs查看容器输出控制台日志,没有日志打印,日志未打印,docker logs不打印容器日志 场景再现: docker部署并启动 ...

  8. SpringBoot 日志框架

    默认的日志框架 logback SpringBoot使用Logback作为默认的日志框架.logback 是log4j框架的作者开发的新一代日志框架,它效率更高.能够适应诸多的运行环境,同时天然支持S ...

  9. SpringBoot Logback配置,SpringBoot日志配置

    SpringBoot Logback配置,SpringBoot日志配置  SpringBoot springProfile属性配置 ================================ © ...

  10. (转)Springboot日志配置(超详细,推荐)

    Spring Boot-日志配置(超详细) 更新日志: 20170810 更新通过 application.yml传递参数到 logback 中. Spring Boot-日志配置超详细 默认日志 L ...

随机推荐

  1. 微信h5支付报错 商家参数格式有误,请联系商家解决

    商家参数格式有误,请联系商家解决 当前调起H5支付的referer为空导致,一般是因为直接访问页面调起H5支付,请按正常流程进行页面跳转后发起支付,或自行抓包确认referer值是否为空 解决:就把 ...

  2. Hyperledger fabric 续篇

    前面我们如果进行顺利的话,环境已经可以成功运行,并且前端页面也可以正常显示,为自己鼓掌吧!!! 接下来,其实也是我自己想做一下尝试,还记得前面的一条查询车辆情况的指令吗? peer chaincode ...

  3. ORACLE之自治事务

    在创建存储过程时,可以用关键字: PRAGMA AUTONOMOUS_TRANSACTION 创建自治事务. 常用场景: 触发器抛错导致事务回滚,日志的记录需要用自治事务进行记录 代码抛错,导致数据库 ...

  4. Navie UI

    开发文档 一个 Vue 3 组件库, 它比较完整,主题可调,用 TypeScript 写的,快.

  5. 面试题-react

    对react的理解 是什么 React 是一个用于构建用户界面的 JavaScript 库. 能干什么 可以通过组件化的方式构建大型的,快速响应的大型web应用 如何做 声明式 React 使用jsx ...

  6. vim中的命令行 %! 是啥意思?

    :%! command pipes the current file's contents to command's stdin, and replaces the file's contents w ...

  7. 解决MyBatis-Plus修改为null值无效的问题

    @TableField(strategy = FieldStrategy.IGNORED)

  8. Docker安装 Redis Stack(开发适配-提供 Redis Stack 服务器和RedisInsight可视化) (6.2.4-v2版本)

    一.使用docker安装(开发适配-提供 Redis Stack 服务器和RedisInsight) (6.2.4-v2版本) 简介 安装命令根据实际部署情况调整 版本地址:官方镜像主页 | 发布版T ...

  9. jQuery 获取鼠标点击的元素ID

    $(function(){ $(document).click(function(e) { // 在页面任意位置点击而触发此事件 var v_id = $(e.target).attr('id'); ...

  10. Drone自动部署配置文件

    .drone.yml 点击查看代码 kind: pipeline # 定义对象类型,还有secret和signature两种类型 type: docker # 定义流水线类型,还有kubernetes ...