提出问题
阅读源码之前,首先提几个问题
- SLF4J是如何整合不同的日志框架的
- Class Path中为什么只能有且仅有一种日志框架的binding
这段文字摘录自官网:In your code, in addition to slf4j-api-1.8.0-beta2.jar, you simply drop one and only one binding of your choice onto the appropriate class path location. Do not place more than one binding on your class path.
源码版本
- org.slf4j:slf4j-api:1.7.25
- org.apache.logging.log4j:log4j-slf4j-impl:2.11.1
- ch.qos.logback:logback-classic:1.2.3
- org.slf4j:slf4j-jcl:1.7.25
源码解析
带着上面的两个问题看下源码
- bind()方法中通过调用findPossibleStaticLoggerBinderPathSet()方法来查找日志框架的绑定
- findPossibleStaticLoggerBinderPathSet()方法中通过ClassLoader或者loggerFactoryClassLoader来获取名为"STATIC_LOGGER_BINDER_PATH"的Resources "STAT