在接入日志系统的时候,通常会引入slf4j-api, slf4j-log4j12以及log4j等包,但是看他们长得都差不多,彼此之间有什么联系呢?为什么要引入这些包?不能直接接入log4j就行了吗?
虽然maven或者gradle项目管理给我们带来了很多便利,但也屏蔽了我们队底层真正包引入的概念。下面我们就详细说一下这些日志包的区别于联系:
1、 slf4j-api:Simple Logging Facade for Java-api,为Java提供的简单日志Facade。Facade:门面,更底层一点说就是接口。slf4j入口就是众多接口的集合,他不负责具体的日志实现,只在编译时负责寻找合适的日志系统进行绑定。
2、 slf4j-log4j12:链接slf4j-api和log4j中间的适配器。它实现了slf4j-apiz中StaticLoggerBinder接口,从而使得在编译时绑定的是slf4j-log4j12的getSingleton()方法。
3、log4j:这个是具体的日志系统。通过slf4j-log4j12初始化Log4j,达到最终日志的输出。