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的集成包)
|
上一篇: surveyor.exe - surveyor是什么进程
下一篇: 关于一个sql问题的思考