Java日志系统相关包的梳理

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的集成包)

猜你喜欢

转载自asialee.iteye.com/blog/2358931