1. 首先系统包含slf4j-api作为日志接入的接口:编译时slf4j-api中public final class LoggerFactor类中private final static void bind()方法会寻找具体的日志实现类绑定,主要通过StaticLoggerBinder.getSingleton()的语句调用。 2. slf4j-log4j12是链接slf4j-api和log4j中间的适配器:它实现了slf4j-api中StaticLogger...
common-logging是apache提供的一个通用的日志接口, 在common-logging中,有一个Simple logger的简单实现,但是它功能很弱,所以使用common-logging,通常都是配合着log4j来使用; Commons Logging定义了一个自己的接口 org.apache.commons.logging.Log,以屏蔽不同日志框架的API差异,这里用到了Adapter Pattern(适配器模式)。
适配器充当了SLF4J API与具体日志实现之间的中介,实现了接口与实现的解耦。当应用程序通过SLF4J API记录日志时,适配器会将这些请求转发给底层的日志框架进行处理。 适配器的关键作用 桥接作用:适配器将SLF4J API的调用转换为对应日志框架的调用,确保了接口的一致性。 配置隔离:适配器使得配置逻辑与应用程序代码分离,...
注意,所有org.slf4j的包版本要完全一致,所以如果引入这些桥接包,要保证它们的版本与前边选择的slf4j-api版本对应。为此Slf4j从2.0.8开始提供了bom包,省去了维护每个包版本的烦恼(至于低版本就只能人肉保证版本一致性了):<dependencyManagement><dependency><groupId>org.slf4j</groupId><artifactId>slf4j-bom...
1. 首先系统包含slf4j-api作为日志接入的接口:编译时slf4j-api中public final class LoggerFactor类中private final static void bind()方法会寻找具体的日志实现类绑定,主要通过StaticLoggerBinder.getSingleton()的语句调用。 2. slf4j-log4j12是链接slf4j-api和log4j中间的适配器:它实现了slf4j-api中StaticLoggerBi...
比如:选择JDK自带的日志系统,则只需要将slf4j-api-1.5.10.jar和slf4j-jdk14-1.5.10.jar放置到classpath中即可,如果中途无法忍受JDK自带的日志系统了,想换成log4j的日志系统,仅需要用slf4j-log4j12-1.5.10.jar替换slf4j-jdk14-1.5.10.jar即可。 2.节省内存...
但是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中查找...
引入slf4j org.slf4j slf4j-api 1.7.36 主执行程序,打一些日志 public class main { private static Logger logger = LoggerFactory.getLogger(main.class); public static void main(String[] args) { logger.info("[info]:[" + new Date() + "][一个信息提示]"); logger.error(...
logback-classic:模块可以被看做是log4j的改进版本。此外,logback-classic 本身实现了 SLF4J API,因此可以在 logback 和其他日志框架(如 log4j 或 java.util.logging(JUL))之间来回切换。 logback-access:模块与 Servlet容器(如 Tomcat 和 Jetty)集成,以提供 HTTP 访问日志功能。
org.slf4j.impl.StaticLoggerBinder:绑定ILoggerFactory实例与LoggerFactory;由各个桥接包实现并定义在org.slf4j.impl包下,注意在slf4j-api-version.jar中不存在该类。 org.slf4j.helpers.NOPLogger:Slf4j的默认日志实现,不输出任何日志 源码分析 - 无日志实现依赖 ...