JCL-Over-SLF4J 是一个适配器,它的作用是将原本依赖于 Jakarta Commons Logging (JCL) API 的代码重定向至 SLF4J。当存在第三方库使用 JCL 进行日志记录时,引入 JCL-Over-SLF4J 可以让这些日志请求通过 SLF4J 进行处理。同时,如果项目选择 Log4J、Log4J2 或 Logback 作为最终的日志实现,需要确保:在项目的类路...
JCL 运行时使用了 SLF4JLogFactory,从而完成了 JCL 的日志实现委托给了 SLF4J,再由 SLF4J 进一步完成具体的日志输出。 采用JCL-Over-SLF4J+SLF4J+Log4J使用模式也是相似的,这里就不详述了。总结下就是 JCL 把 SLF4J 当作它的日志实现。 再来想象个问题:如果我们把这两个包 jcl-over-slf4j-1.5.11.jar 和 ...
从前面对 SLF4J 的认识可知,即使把 JCL 转嫁到 SLF4J,还是无法输出日志,还需要一种日志实现,下层该用 Log4J 还得用 Log4J,想用 Logback 还是要用 Logback。所以到了 SLF4J 后还得往下走,也就是前面那两条路 SLF4J+Log4J 和 SLF4J+Logback,本篇使用 SLF4J 的模式具体就要分为: JCL-Over-SLF4J+SLF4J+Lo...
还有一些组建可能直接调用了 java.util.logging,这时你需要一个桥接器(名字为 XXX-over-slf4j.jar)把他们的日志输出重定向到 SLF4J,所谓的桥接器就是一个假的日志实现工具,比如当你把 jcl-over-slf4j.jar 放到 CLASS_PATH 时,即使某个组件原本是通过 JCL 输出日志的,现在却会被 jcl-over-slf4j “骗到”SL...
JCL-Over-SLF4J+SLF4J+Log4J和 JCL-Over-SLF4J+SLF4J+Logback,这两种实现方式差不多。只是分别用的 jar 包和配置文件不同,SLF4J+Log4J 和 SLF4J+Logback 原来要哪些文件现在还是需要那些文件,只是都要加上 jcl-over-slf4j-1.5.11.jar 包。这里说明 JCL-Over-SLF4J+SLF4J+Logback的方式。
使用SLF4J时,需要使用某一种日志实现,必须选择正确的SLF4J的JAR包的集合,即各种桥接包,这就是SLF4J的静态绑定(bindings): 在这里插入图片描述 如上图,SLF4J(和其他日志框架)提供的binding如下: logback-classic:因为Logback晚于SLF4J诞生,故一开始SLF4J没有提供Logback的实现类,由Logback提供,实现org.slf4j.spi.SL...
5、slf4j集成log4j(使用适配器) 6、slf4j集成jul(使用适配器) 7、桥接器的使用 (1)源码分析 8、Marker标记的使用 一、什么是日志门面 1、门面模式(外观模式) 门面模式(Facade Pattern),是GoF23种设计模式其中之一,也称之为外观模式,其核心为:外部与一个子系统的通信必须通过一个统一的外观对象进行,使得子系统...
<artifactId>slf4j-parent</artifactId> <version>2.0.17-SNAPSHOT</version> <relativePath>../parent/pom.xml</relativePath> </parent> <modelVersion>4.0.0</modelVersion> <artifactId>jcl-over-slf4j</artifactId> <packaging>jar</packaging> <name>JCL 1.2 implemented over SLF4J</name> <description>...
jcl-over-slf4j:commons-logging到slf4j的桥梁 slf4j转向某个实际的日志框架: 场景介绍:如 使用slf4j的API进行编程,底层想使用log4j1来进行实际的日志输出,这就是slf4j-log4j12干的事。 slf4j-jdk14:slf4j到jdk-logging的桥梁 slf4j-log4j12:slf4j到log4j1的桥梁 log4j-slf4j-impl...
slf4j-jdk14:使用JUL打印 slf4j-simple:使用SLF4J自带 slf4j-nop:不打印日志 slf4j-jcl:? SLF4J静态绑定原理:SLF4J会在编译时查找org.slf4j.spi.LoggerFactoryBinder(2.0.0版本后,被org.slf4j.spi.SLF4JServiceProvider)的实现类,如slf4j-log4j12的实现类org.slf4j.impl.StaticLoggerBinder,该类里面实现对具...