终于搞懂了Java 日志系统依赖

终于搞懂了Java 日志系统依赖

  • 简介
    • 相关的依赖
  • 使用

简介

slf4j (Simple Logging Facade for Java) 为了 Java 开发者在部署的时候能使用自己想要使用的日志系统。是最顶层 api 的角色,当然其他的日志系统,比如log4j也有自己的 api,但是你如果想要在将来更换成其他的日志系统就比较麻烦。

实际在工作的日志系统
log4j1.x 可以在日志文件里面控制日志的输出行为,现在还有很多有名开源软件使用的它,比如 flink-1.4.2
commons-logging 即 jcl
java.util.logging 即 jul
logback 被当做是 log4j的替代者,相对于log4j有更快的速度,更小的内存占用。并且logback-classic很好的实现了slf4j的api,参考:https://logback.qos.ch/reasonsToSwitch.html
log4j2 被当做是log4j1.x和logback的升级版

相关的依赖

log4j.jar log4j1.x的依赖
log4j-over-slf4j.jar log4j 转到 slf4j1.x
slf4j-log4j12.jar slf4j 使用 log4j1.x的日志系统输出

log4j-api.jar log4j2.x的api
log4j-core.jar log4j2.x的 core
log4j-jul.jar 将jul 桥接到 log4j2
log4j-slf4j-impl.jar 同时兼容log4j 和 slf4j的 api

jcl-over-slf4j.jar jcl 转到slf4j
slf4j-jcl.jar slf4j 转到 jcl

jul-to-slf4j.jar跟 log4j-over-slf4j 和 jcl-over-slf4j.jar 不同,我们不能把java.util给 exclude掉,所以它跟前两者的命名方式的不同也体现了这一点。
slf4j-jdk14.jar slf4j 转到 jul

注意:log4j-over-slf4j 与 slf4j-log4j12.jar , jcl-over-slf4j.jar 与slf4j-jcl.jar , jul-to-slf4j.jar与slf4j-jdk14.jar 这些依赖不能成对存在,不然会有死循环。

使用

使用SLF4j:
终于搞懂了Java 日志系统依赖_第1张图片
但是有时候,我们的工程里面会引入第三方的依赖,比如我的工程里面有引入了elasticsearch-rest-high-level-client, 它内部使用的是commons-logging,我在工程里面使用的却是slf4j和log4j2。这时候我们可以使用桥接。

终于搞懂了Java 日志系统依赖_第2张图片

参考资料:
https://www.slf4j.org/legacy.html
https://www.slf4j.org/manual.html
https://logging.apache.org/log4j/2.0/runtime-dependencies.html

你可能感兴趣的:(logging)