java 日志江湖的那些故事

时间:2022-12-01 22:05:39

在java的世界里,有许多日志工具比如log4j logback 等。但他们都是什么关系?下面由我来为大家解答。

先来讲讲日志的渊源吧。话说很多年前,有个叫log4j的小伙子,凭借着一身好武艺,基本上已经统领了日志界的半边天。虽然他很厉害,但是不服他的人还是很多。

这可就难坏了那些使用者们,我们到底要使用哪个呢?如果开始选不好,那么后面再切换可就麻烦了。就在这血雨腥风的时候,一位德高望重的老者出现了,他就是

Apache(阿帕其)。阿老爷本着江湖需要和平的原则, 将日志界的佼佼者们聚集在一起。一顿唇枪舌剑后,问题终于得到了解决。那就是由阿老爷来编写一系列接口,其它

人都来实现这个接口。这样使用者们都对接口编程就可以啦!

终于找到了解决办法,那就废话少说开干吧!于是阿老爷就编写出了大名鼎鼎的Apache Commons Logging (之前叫 Jakarta Commons Logging,JCL)这下

可好了, 大家弹冠相庆, 纷纷实现了JCL, 从此天下归一。所以即使到现在你仍会看到很多程序应用 JCL + log4j 这种搭配。

        但事情到此还没有结束, 大家在使用过程中发现, 当程序规模越来越庞大时, JCL的动态绑定并不是总能成功. 这让log4j这位年轻人非常生气!你个老头, 说要大家都

听你的, 到后来你的东西出现问题了, 唇亡齿寒, 那我们可怎么办!别人我管不着, 我要自己弄个接口, 否则被你拖下水都不知道. 就是这样的原因, 这位年青人不久之后写

出了惊天之作slf4j-api.跟 JCL 一样,slf4j 也是只提供 log 接口,针对每一种日志实现都需要一个绑定器名字为slf4j-xxx-version.jar. 举个例子, 如果你要使用log4j.

那么你只需要针对slf4j-api编程, 然后在打包时你需要放入slf4j-log4j12-version.jar和log4j.jar就可以了。

        这样做后问题是解决了,可是那些之前使用阿老爷的用户们怎么办啊?难道不管他们了吗?路见不平一声吼啊!就在这时,帮助JCL转入slf4j的工具又出现了.

jcl-over-slf4j.jar就是它!它解决了使用JCL用户的问题。

好啦!问题终于解决了,在江湖各界人士的努力下,日志系统大步的向前迈进。之后出现的java.util.logging(JUL)也纳入了这个系统.

      故事讲完了,现在向大家展示日志系统的架构图:

java 日志江湖的那些故事

现在大家明白了日志江湖的故事了吧, 最后总结一下. 现在比较典型的搭配就是slf4j-api.jar、jcl-over-slf4j.jar、jul-over-slf4j.jar、slf4j-log4j12-version.jar、log4j.jar.