3.Java日志框架slf4j、jcl、jul、log4j1、log4j2、logback大总结

时间:2022-07-22 04:14:48

一、slf4j、jcl、jul、log4j1、log4j2、logback

JUL:JDK中的日志记录工具,也常称为JDKLog、jdk-logging。

LOG4J1:一个具体的日志实现框架。

LOG4J2:一个具体的日志实现框架,是LOG4J1的下一个版本。

LOGBACK:一个具体的日志实现框架,但其性能更好。

JCL:一个日志门面,提供统一的日志记录接口,也常称为commons-logging。

SLF4J:一个日志门面,与JCL一样提供统一的日志记录接口,可以方便地切换看具体的实现框架。

JUL/LOG4J1/LOG4J2/LOGBACK 是日志实现框架,而JCL/SLF4J 是日志实现门面。

二、各种Jar包总结

日志框架包

- log4j1
  - log4j:log4j1的全部内容
- log4j2
  - log4j-api:log4j2定义的API
  - log4j-core:log4j2上述API的实现
- logback
  - logback-core:logback的核心包
  - logback-classic:logback实现了slf4j的API
- commons-logging
  - commons-logging:commons-logging的原生全部内容
  - log4j-jcl:log4j与jcl集成包

SLF4J 转向某个实际的日志框架

场景介绍:如 使用slf4j的API进行编程,底层想使用log4j1来进行实际的日志输出,这就是slf4j-log4j12干的事。

- slf4j-jdk14:slf4j到jdk-logging的桥梁
- slf4j-log4j12:slf4j到log4j1的桥梁
- log4j-slf4j-impl:slf4j到log4j2的桥梁
- logback-classic:slf4j到logback的桥梁
- slf4j-jcl:slf4j到commons-logging的桥梁

某个实际的日志框架转向SLF4J

场景介绍:如 使用log4j1的API进行编程,但是想最终通过logback来进行输出,所以就需要先将log4j1的日志输出转交给slf4j来输出,slf4j 再交给logback来输出。将log4j1的输出转给slf4j,这就是log4j-over-slf4j做的事。

- jul-to-slf4j:jdk-logging到slf4j的桥梁
- log4j-over-slf4j:log4j1到slf4j的桥梁
- jcl-over-slf4j:commons-logging到slf4j的桥梁

三、集成总结

commons-logging与其他日志框架集成