一、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的桥梁