slf4j(简单日志门面)日志框架介绍(一)

Slf4j的原理
值得一提的是slf4j的作者,同时也是log4j和logback的开发者,名叫Ceki Gülcü。
slf4j和commons-logging的作用和基本原理是一样的,在slf4j-api中提供了两个接口:
org.slf4j.Logger
org.slf4j.ILoggerFactory

但是相比commons-logging, slf4j有两个不同之处,也可以说为优点:
第一:slf4j对ILoggerFactory的寻找上,是静态绑定,它必须存在一个类org.slf4j.impl.StaticLoggerBinder,指明使用的哪个日志框架,loggerfactory是那个。
为此,slf4j对几乎所有的日志框架都提供一个适配(adaptation)包,里面包含loggerfactory和logger的实现。以及一个org.slf4j.impl.StaticLoggerBinder类

使用slf4j和其它日志框架,只要引入slf4j-api包,以及对应的适配包即可。
下图是官方提供的一张图,slf4j绑定不同的日志实现:
slf4j日志框架
第二:slf4j提供了一种占位符的接口形式,从而避免对字符串不必要的拼接。
举例:
如果用commons-logging打日志:

log.info(“my name is” + name +”,my age is ”+ age);

如果log的日志级别配置的是ERROR,那么这句日志就不会输出,但是代码中的字符串拼接操作还是会执行。
为此,我们必须这样写:

If ( log. isInfoEnabled() )
{
log.info(“my name is” + name +”,my age is ”+ age);
}

如果你使用slf4j, 你就可以优雅的这样写:

log.info(“my name is {}, my age is {}.”, name, age);

留言

提示:你的email不会被公布,欢迎留言^_^

*

验证码 *