更换Spring底层日志框架

spring-jcl

在spring中有一个模块叫做spring-jcl,是Spring的日志框架,底层是会对日志框架进行判断的,是根据日志框架做优先级选取的。

spring-jcl底层日志框架加载优先级

有一个优先级:LOG4J2 级是最高的,其次是SLF4J (>=1.3)、SLF4J(<1.3)、JUL

这个加载优先级可以在一个叫LogAdapter的类中看到,所以说要更换的实现,只需导入相应的jar包即可,spring-jcl在底层会做优先级判断以确定底层日志框架的选择。

看下面源吗就知道,LogAdapter会根据项目拥有的日志框架,以更改其底层日志框架。
如果需要更换spring底层默认使用的日志框架,只需要导入相应的日志框架即可,spring-jcl将会根据优先级使用不同的日志框架。
Java常用的日志框架介绍:https://blog.csdn.net/qq_43203949/article/details/119902321

private static final String LOG4J_SPI = "org.apache.logging.log4j.spi.ExtendedLogger";private static final String LOG4J_SLF4J_PROVIDER = "org.apache.logging.slf4j.SLF4JProvider";private static final String SLF4J_SPI = "org.slf4j.spi.LocationAwareLogger";private static final String SLF4J_API = "org.slf4j.Logger";private static final LogApi logApi;static {if (isPresent(LOG4J_SPI)) {if (isPresent(LOG4J_SLF4J_PROVIDER) && isPresent(SLF4J_SPI)) {// log4j-to-slf4j bridge -> we'll rather go with the SLF4J SPI;// however, we still prefer Log4j over the plain SLF4J API since// the latter does not have location awareness support.logApi = LogApi.SLF4J_LAL;}else {// Use Log4j 2.x directly, including location awareness supportlogApi = LogApi.LOG4J;}}else if (isPresent(SLF4J_SPI)) {// Full SLF4J SPI including location awareness supportlogApi = LogApi.SLF4J_LAL;}else if (isPresent(SLF4J_API)) {// Minimal SLF4J API without location awareness supportlogApi = LogApi.SLF4J;}else {// java.util.logging as defaultlogApi = LogApi.JUL;}
}

关于spring boot的选择

spring boot默认使用logback日志框架(logback是面向slf4j接口编程的)

<!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-logging -->
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-logging</artifactId><version>2.3.11.RELEASE</version>
</dependency>

如果想使用log4j2去代替logback的话,就导入下面这个jar包

<!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-log4j2 -->
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-log4j2</artifactId><version>2.5.4</version>
</dependency>

更换Spring底层日志框架相关推荐

  1. Spring boot日志框架

    日志框架 日志的抽象层 日志的实现层 Spring boot底层,是Spring框架 Spring框架,默认使用JCL Spring boot 使用的SLF4J和Logback 日志门面,SLF4J ...

  2. Spring boot 日志框架

    SpringBoot能自动适配所有的日志,而且底层使用slf4j+logback的方式记录日志,引入其他框架的时候,只需要 把这个框架依赖的日志框架排除掉即可: <dependency> ...

  3. Spring整合日志框架Log4j2

    对于一款软件而言,日志记录都是十分重要的.它不仅能够监控程序的运行情况,周期性的记录到文件中,还能够跟踪程序中代码的运行轨迹,向文件或控制台打印代码的调试信息.当程序出现错误时,日志记录可以帮助开发人 ...

  4. 3.1.spring boot 日志框架SLF4j使用示例

    目前比较常用的有以下几种日志框架 JUL.JCL.Jboss-logging.logback.log4j.log4j2.slf4j.... 其中SpringBoot主要是使用 SLF4j和logbac ...

  5. spring boot日志框架体系剖析(默认采用logback作为日志框架)

      一定要排除依赖,才能使用中间转换包,要不然就会出现依赖冲突: spring boot对日志输出级别等作出了默认配置: 替换springboot默认的配置: 切换到log4j: pom依赖排除: l ...

  6. Spring全家桶中的日志框架

    Spring全家桶中的日志框架 spring-jcl spring-jcl是spring的日志框架,spring-jcl底层使用的日志框架是有优先级的优先级为:LOG4J2 级是最高的,其次是SLF4 ...

  7. spring boot—集成log4j2日志框架

    文章目录 市场上的日志框架 spring boot日志框架关系 移除默认日志框架 切换为log4j2日志框架 市场上的日志框架   1)日志门面最常用的是slf4j   2)日志实现最常用的是logb ...

  8. 【Spring 工厂】工厂设计模式、第一个Spring程序细节分析、整合日志框架

    Spring 引言 什么是 Spring? 工厂设计模式 简单工厂的设计 通用工厂的设计 通用工厂的使用方式 第一个 Spring 程序 环境搭建 Spring 的核心API 程序开发 细节分析 Sp ...

  9. 第三章--Spring5.X与日志框架的整合以及Spring注入(injection)

    Spring与日志框架进行整合,日志框架就可以在控制台中,输出Spring框架运行过程中的一些重要的信息. 好处:便于了解Spring框架的运行过程,利于程序的调试. Spring如何整合日志框架 默 ...

最新文章

  1. 浅显易懂 Makefile 入门 (09)— include 文件包含、MAKECMDGOALS
  2. 我在谷歌实习时发现了一个模型 bug,于是有了这篇 ACL
  3. Python 动态变量名定义与调用
  4. shmmax单位_linux 内存管理——内核的shmall 和shmmax 参数
  5. CCNP自学之路——eigrp--1
  6. 剑指offer:调整数组顺序使奇数位于偶数前面
  7. QT入门注意事项(1)
  8. 产品优化成果过关?监控数据说了算
  9. 另一种ABAP解析XML file的方式
  10. python基本输入输出系统_Python的输入输出
  11. compress()方法
  12. js计算排名_今天,我们讲一下,快速排名与黑帽SEO
  13. 津津的储蓄计划(洛谷-P1089)
  14. 58 - II. 左旋转字符串
  15. mybatis mysql uuid_spring boot整合mybatis利用Mysql实现主键UUID的方法
  16. 代码重构!你敢吗?| 技术头条
  17. 泰康应用盒子Android,泰康医疗app下载-泰康医疗 安卓版v1.8.8-PC6安卓网
  18. 20190902每日一句
  19. 计算机课怎么管纪律,浅谈如何巧妙设置学生机轻松管理机房课堂纪律
  20. 几行代码实现鼠标自动点击电脑屏幕指定位置,防止电脑或远程桌面休眠

热门文章

  1. javascript核心
  2. d3.js学习笔记--Mike Bostock: Thinking with Joins
  3. 如何优雅的使用RabbitMQ
  4. .NET定时任务执行管理器开源组件–FluentScheduler
  5. Android开发之旅:应用程序基础及组件
  6. MongoDB 一个基于分布式文件存储的数据库
  7. Nginx+Lua(OpenResty) HelloWorld
  8. 台式计算机键盘配置及价格,最新台式电脑组装配置单及价格【图文】
  9. 只用html5与CSS做一个简单的页面,HTML+CSS基础训练之做一个简单页面的布局
  10. 谷歌新语言重写android,谷歌将推新设计语言 安卓APP用户界面将换新颜