SLF4J原理

slf4j的优势与使用原理

slf4j采用门面模式,即把自己作为一个日志接口,并不提供实现。

SLF4J原理_第1张图片
image.png

我们在使用slf4j的时候是如下这个样子的

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
private static final Logger LOG = LoggerFactory.getLogger(ZkConnection.class);

追踪LoggerFactory.getLogger源码到最后会发现实际上返回的工厂类来自于StaticLoggerBinder.getSingleton().getLoggerFactory()方法
而StaticLoggerBinder并不存在于slf4j自己的jar包内。
当我们使用log4j的时候,我们通过maven引入log4j-core包的同时也会自动引入一个slf4j-log4j的jar包,这个包是将slf4j调用log4j的桥梁,而StaticLoggerBinder正是存在于slf4j-log4j的这个jar包内。
因此我们只需要引入slf4j-api和log4j-core,和配置一下log4j.properties文件就可以在任何使用了slf4j的项目中打出log4j的日志了。


SLF4J原理_第2张图片
StaticLoggerBinder.getSingleton().getLoggerFactory()

你可能感兴趣的:(SLF4J原理)