slf4j原理

1.slf4j只是一个壳,一个通用的壳

SLF4J不是具体的日志解决方案,它只服务于各种各样的日志系统。按照官方的说法,SLF4J是一个用于日志系统的简单Facade,允许最终用户在部署其应用时使用其所希望的日志系统。

2. 如果你打算发布一个类库或者组件,可以使用slf4j,这样不过将来用在什么地方,打log都不会有任何影响

3. 在实际使用中,我们通过LoggerFactory.getLogger()获得logger,查看LoggerFactory的源代码会发现如下两点,

  • LoggerFactory通过StaticLoggerBinder.getSingleton().getLoggerFactory()获得LogFactory,然后再通过该LogFactory来获取logger的
  • 但是StaticLoggerBinder类并不在slf4j-api-1.5.10.jar中,分析与具体日志系统相关的jar包,会发现每个 jar包都有一个StaticLoggerBinder类的实现(如slf4j-log4j12-1.5.10.jar、slf4j-simple- 1.5.10.jar、slf4j-jdk14-1.5.10.jar均有StaticLoggerBinder类实现),这就很明白了,slf4j在启动时会动态到classpath中查找StaticLoggerBinder类,找到之后就可以生成对应日志系统的日志文件了

4. Apache Commons Logging 和 slf4j也一样,都是Depends on the underlying framework,不过听说commons logging是按顺序查询具体日志系统,commons logging.jar本身带有所有日志系统的Facade了,无须在使用时再按照具体日志系统添加依赖。

 

 

posted @ 2012-03-26 22:57  花生太郎  阅读(389)  评论(0编辑  收藏  举报