84669 Lernen von Personen
152542 Lernen von Personen
20005 Lernen von Personen
5487 Lernen von Personen
7821 Lernen von Personen
359900 Lernen von Personen
3350 Lernen von Personen
180660 Lernen von Personen
48569 Lernen von Personen
18603 Lernen von Personen
40936 Lernen von Personen
1549 Lernen von Personen
1183 Lernen von Personen
32909 Lernen von Personen
人生最曼妙的风景,竟是内心的淡定与从容!
首先,你需要了解一个设计模式:适配器模式。
Java用来记录日志的库有很多,例如有JDK自带的Logger、Log4j、Logback,它们之间互相不兼容,通常情况下,我们写代码的时候选用其中一个就可以了。
但是,如果有一天你写的代码开源了,要给别人使用,那么问题就来了,该使用哪个日志库?当然不能随便选用一个了,因为你不知道使用你的开源库的人用的哪个日志框架。这时候你想无论别人使用哪个日志框架,你都可以兼容,这时候就要使用commons-logging或slf4j了。所以一般开源框架都不会使用具体的日志框架,而是用commons-logging或slf4j处理日志,这样可以根据使用者使用的具体日志框架来记录日志,例如Hibernate用的是slf4j(不过好像最新版本用的是JBOSS的适配器了)、Spring用的是commons-logging。
Java在日志这块不像JDBC,JDBC有一套共同的标准API,无论你连接Oracle、MySQL,API接口都是一样的。但是日志库JDK Logger、Log4j、Logback是互相不兼容的,没有共同的Interface,所以commons-logging、slf4j通过适配器模式,抽象出来一个共同的接口,然后根据使用的具体日志框架来实现日志。
总结一下,就是JDK Logger、Log4j、Logback是具体的日志框架的实现,commons-logging、slf4j是解决日志框架之间不兼容而抽象出来的适配器接口。
最后,这篇博客是我对slf4j的源码解析,希望对你有帮助:http://blog.csdn.net/xiao__gui/article/details/32695647
有的是接口,有的是实现。slf4j是log4j的升级版,都实现commons-logging。
slf4j是一个log的facade,你可以选择底层是使用commons-logging,log4j,logback等具体的实现。
首先,你需要了解一个设计模式:适配器模式。
Java用来记录日志的库有很多,例如有JDK自带的Logger、Log4j、Logback,它们之间互相不兼容,通常情况下,我们写代码的时候选用其中一个就可以了。
但是,如果有一天你写的代码开源了,要给别人使用,那么问题就来了,该使用哪个日志库?当然不能随便选用一个了,因为你不知道使用你的开源库的人用的哪个日志框架。这时候你想无论别人使用哪个日志框架,你都可以兼容,这时候就要使用commons-logging或slf4j了。所以一般开源框架都不会使用具体的日志框架,而是用commons-logging或slf4j处理日志,这样可以根据使用者使用的具体日志框架来记录日志,例如Hibernate用的是slf4j(不过好像最新版本用的是JBOSS的适配器了)、Spring用的是commons-logging。
Java在日志这块不像JDBC,JDBC有一套共同的标准API,无论你连接Oracle、MySQL,API接口都是一样的。但是日志库JDK Logger、Log4j、Logback是互相不兼容的,没有共同的Interface,所以commons-logging、slf4j通过适配器模式,抽象出来一个共同的接口,然后根据使用的具体日志框架来实现日志。
总结一下,就是JDK Logger、Log4j、Logback是具体的日志框架的实现,commons-logging、slf4j是解决日志框架之间不兼容而抽象出来的适配器接口。
最后,这篇博客是我对slf4j的源码解析,希望对你有帮助:http://blog.csdn.net/xiao__gui/article/details/32695647
有的是接口,有的是实现。slf4j是log4j的升级版,都实现commons-logging。
slf4j是一个log的facade,你可以选择底层是使用commons-logging,log4j,logback等具体的实现。