欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Java日志系统相关包的梳理  

程序员文章站 2022-06-07 12:59:22
...

1.常见的日志框架

 

日志框架 介绍
jul(java.util.logging) jdk1.4加入,为了对抗log4j,效率灵活性较差使用较少
log4j 最广泛应用的日志框架,成为事实上的标准
logback 基于slf4j-api接口实现,性能高于log4j
log4j2 重写了log4j,性能高于log4j,logback
注:log4j、logback、log4j2是同一个作者Ceki Gülcü
 
 上面介绍了四种日志框架,到底用哪个日志框架,现在广泛应用的还是log4j,如果负载较高可以考虑使用logback和log4j2.
但是如果两个系统相互依赖,用的不同的日志框架,难道需要依赖两个日志框架么?
Apache和log4j的作者提供两种选择,JCL(commings-log)和SLF4J(simple log facade for java)两个日志框架的门面。提供了统一的日志抽象接口,适配和转接了各种日志框架,使用者只用调用抽象层统一的接口就行了。应用层不直接依赖实际的日志实现。

2.日志门面JCL和SLF4J

 

日志门面 介绍
JCL(commings-log) Apache提供的comming-log
SLF4J(simple log facade for java) Log4j、Logback、Log4j2作者提供
 
 

3.日志体系各种包总结

 
日志框架
log4j 只有log4j
log4j2
log4j-api(日志接口)
log4j-core(log4j-api的实现)
logback
logback-core(logback核心包)
logback-classic(slf4j-api的实现)
commons-logging
commons-logging (jcl)
log4j-jcl(commons-logging到log4j的桥梁)
jcl-over-slf4j(commons-logging到slf4j的桥梁)
slf4j
slf4j转向某个实际日志框架:
slf4j-jdk14:slf4j到jdk-logging的桥梁
slf4j-log4j12:slf4j到log4j1的桥梁
log4j-slf4j-impl:slf4j到log4j2的桥梁
logback-classic:slf4j到logback的桥梁
slf4j-jcl:slf4j到commons-logging的桥梁
某个实际日志框架转向slf4j:
jul-to-slf4j:jdk-logging到slf4j的桥梁
log4j-over-slf4j:log4j1到slf4j的桥梁
jcl-over-slf4j:commons-logging到slf4j的桥梁

4.集成实践

 

4.1 jcl与日志框架的集成

 

集成的框架 需要的包
jul
commons-logging
jul
log4j
commons-logging
log4j1
log4j2
commons-logging
log4j-api (log4j2的API包)
log4j-core (log4j2的API实现包)
log4j-jcl (log4j2与commons-logging的集成包)
logback
jcl-over-slf4j (替代了commons-logging)
slf4j-api
logback-core
logback-classic
logback本身的使用其实就和slf4j绑定了起来,现在要想指定commons-logging的底层log实现是logback,则需要2步走
 
 

4.2 slf4j与日志框架的继承

 
集成的框架 需要的包
jul
slf4j-api
slf4j-jdk14
log4j
slf4j-api
slf4j-log4j12
log4j
log4j2
slf4j-api
log4j-api
log4j-core
log4j-slf4j-impl (用于log4j2与slf4j集成)
logback
slf4j-api
logback-core
logback-classic(已含有对slf4j的集成包)