摘要:的桥接器这个桥接器将所有日志委派给的原生实现,直接实现了的接口,因此使用与的搭配也暗示了严格的零内存计算溢出未完待补充
起手式
忘了什么时候听老师说过,牛逼的公司只管定义接口,屌丝厂商实现接口,类似 JDBC 的实现便是如此,用在 slf4j, 总觉得有些类似,本来 SUN 有机会在需求产生之前设计一套漂亮的日志框架来一统天下,可惜偏偏要拖到 JDK1.4, 而这套原生的日志框架也没有足够漂亮,而之前早已经经过市场考验的日志框架也在不断持续的改进,log4j,logback, common-logging 等等已经在许多系统中长久驻足。
翻到Java中的日志框架史,看到下面有趣的文字
正文 Apache user manual 选译最早出现的日志框架是apache提供的log4j,使用最为广泛,成为了Java日志的事实上的标准;然而当时Sun公司在jdk1.4中增加了JUL(java.util.logging),企图对抗log4j,于是造成了混乱,当然此时也有其它的一些日志框架的出现,如simplelog等,简直是乱上加乱。
解决这种混乱的方案出现了:抽象出一个接口层:于是开源社区提供了commons-logging,被称为JCL。抽象时参考了log4j、JUL、simplelog,对它们进行了适配或转接,这样就一统江湖了。
看上去现在已经非常完美了,但好景不长,log4j的作者(Ceki Gülcü)觉得JCL不够优秀,他要搞出一套更优雅的出来,于是slf4j就出现了,并且亲自实现了一个亲子——logback(有点,老子又回来了的感觉^_^)。好吧,确实更优雅了,但混乱局面又出现了,之前使用JCL的怎么办呢,于是Ceki Gülcü在slf4j又对JCL作了桥接转换,然而事情还没完,Ceki Gülcü又回来拯救自己的“大阿哥”——log4j,于是log4j2就诞生了,同时log4j2也加进了slf4j体系中。
PS:SLF4J是在Compile绑定实现的,而JCL是Runtime时绑定的。
SLF4J ( The simple logging facade for java ) 作为诸多日志框架的门面或者抽象,这些框架包括java.util.logging, logback 和 log4j. slf4j 允许终端用户在部署系统时想使用插件一样来选择使用不同的日志框架。
关于如何绑定一个日志框架创建工程,将 slf4j-api-1.7.13.jar 加入 class path , 以下程序编译运行
import org.slf4j.Logger; import org.slf4j.LoggerFactory; public class HelloWorld { public static void main(String[] args) { Logger logger = LoggerFactory.getLogger(HelloWorld.class); logger.info("Hello World"); } }
控制台输出
SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder". SLF4J: Defaulting to no-operation (NOP) logger implementation SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.
可见单纯的 slf4j 只是定义了一套接口,以及其他日志框架的转接器
现在我们为 slf4j 绑定最简单的实现,在 classpath 加入 slf4j-simple-1.7.13.jar
重新编译运行,控制台输出:
0 [main] INFO HelloWorld - Hello World可以绑定的日志框架的桥接 jars
log4j 1.2(一个广泛使用的日志框架)版本的桥接器,你可以将 log4j.jar 加入classpath
java.util.logging 的桥接器,JDK原生日志框架
NOP 桥接器,静默丢弃一切日志
一个简单实现的桥接器,该实现输出所有事件到 System.err. 只有INFO以及高于该级别的消息被打印,在小型应用中它也许是有用的。
Jakarta Commons Logging 的桥接器. 这个桥接器将SLF4j所有日志委派给 JCL
slf4j 的原生实现,logback 直接实现了 slf4j 的接口,因此使用 slf4j 与 logback 的搭配也暗示了严格的零内存计算溢出
未完待补充文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/65346.html
摘要:深入学习系列三那些年我们用过的日志框架目前常见的日志框架和中文似乎不太好翻译有一下几种即其中,为同一个作者所写。如前面所述,在才被引入,在这之前,并没有官方的日志库供开发者使用。 title: 【Java深入学习系列】三. 那些年我们用过的日志框架date: 2016-10-16 15:32:50 category: java 目前常见的Java日志框架和facades(中文似乎不太好...
摘要:但是考虑到各不相同,所以出现了等日志框架。日志框架只是统一的,其底层的具体的日志记录工作还是由等承担。如何选择和搭配日志系统目前来说,新应用使用是首选,一些老系统中很可能使用的是等。所以若日志冲突时,使用的三方库只需要相应的实现库即可。 日志系统的发展 我们日常接触到的日志系统有很多种,log4j,JUL(jdk自带),logback等,我们可以直接根据对象的日志API进行使用。但是考...
摘要:本文要来分享给大家程序员最常用的日志框架组件。没有基础的同学也不要着急,这套教程覆盖了目前所有的日志框架,只要你学,就一定用得到,先收藏,以备不时之需。 作为一名Java程序员,我们开发了很多Java应用程序,包括桌面应用、WEB应用以及移动应用。然而日志系统是一个成熟Java应用所必不可少的。在开发和调试阶段,日志可以帮...
摘要:想要看级别的信息,你需要在启动时传入这个系统属性使用与日志现在我们可以试验并更换不同的日志实现,但你的程序代码可以保持不变。我们要做的是用另一个流行的日志实现来替换掉,比如。又一次,我们必须对我们选的每一个日志实现做配置。 使用slf4j库作为你的Java应用日志API层有很多好处,这里我会展示一小部分关于如何使用和配置它的例子。 你可以把slf4j想成一个Java的接口,然后你需要实...
阅读 1796·2019-08-30 15:55
阅读 981·2019-08-26 11:57
阅读 442·2019-08-26 11:29
阅读 3329·2019-08-26 10:49
阅读 1881·2019-08-23 18:40
阅读 1725·2019-08-23 16:04
阅读 3073·2019-08-23 11:01
阅读 2248·2019-08-23 10:56