日志体系

1.日志体系介绍

1.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)两个日志框架的门面。提供了统一的日志抽象接口,适配和转接了各种日志框架,使用者只用调用抽象层统一的接口就行了。应用层不直接依赖实际的日志实现。

1.2 日志门面JCL和SLF4J

日志门面 介绍
JCL(commings-log) Apache提供的comming-log,在运行期间查找
SLF4J(simple log facade for java) Log4j、Logback、Log4j2作者提供,可以在编译期间查找,使用了OSGI

1.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的桥梁 |

1.4 集成实践

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步走

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

results matching ""

    No results matching ""