它允许用户以自己的喜好

时间:2022-04-13 03:19:04

slf4j:Simple Logging Facade for Java,为java供给的简单日志Facade。Facade门面,更底层一点说就是接口。它允许用户以本身的爱好,在工程中通过slf4j接入差此外日志系统。

因此slf4j入口就是众多接口的调集,它不卖力具体的日志实现,只在编译时卖力寻找合适的日志系统进行绑定。具体有哪些接口,全部都界说在slf4j-api中。检察slf4j-api源码就可以发明,里面除了public final class LoggerFactory类之外,都是接口界说。因此slf4j-api素质就是一个接口界说。

它只供给一个核心slf4j api(就是slf4j-api.jar包),这个包只有日志的接口,并没有实现,所以如果要使用就得再给它供给一个实现了些接口的日志包,,比 如:log4j,common logging,jdk log日志实现包等,但是这些日志实现又不能通过接口直接挪用,实现上他们根柢就和slf4j-api不一致,因此slf4j又增加了一层来转换各日志实 现包的使用,好比slf4j-log4j12等。

slf4j+log4j组合使用模式:
1. slf4j-api-1.5.11.jar
2. slf4j-log4j12-1.5.11.jar
3. log4j-1.2.15.jar
4. log4j.properties(也可以是 log4j.xml)

具体使用日志类的API:

1. log4j:

import org.apache.log4j.Logger;

Logger logger= Logger.getLogger(xx.class);

 

2. slf4j+log4j:(保举)

import  org.slf4j.Logger;

import  org.slf4j.LoggerFactory;

Logger logger = LoggerFactory.getLogger(xx.class);

2. slf4j-api、slf4j-log4j12、log4j

下图对照清晰的描述了它们之间的关系,例子为当系统给与log4j作为日志框架实现的挪用关系:

它允许用户以自己的喜好

1. 首先系统包罗slf4j-api作为日志接入的接口:编译时slf4j-api中public final class LoggerFactor类中private final static void bind()要领会寻找具体的日志实现类绑定,主要通过StaticLoggerBinder.getSingleton()的语句挪用。
2. slf4j-log4j12是链接slf4j-api和log4j中间的适配器:它实现了slf4j-api中StaticLoggerBinder接口,从而使得在编译时绑定的是slf4j-log4j12的getSingleton()要领。
3. log4j是具体的日志系统:通过slf4j-log4j12初始化Log4j,到达最终日志的输出。

3. log4j  x. 参考资料