什么是slf4j
全称,Simple Logging Facade for Java, 官网如下解释:
The Simple Logging Facade for Java (SLF4J) serves as a simple facade or abstraction for various logging frameworks (e.g. java.util.logging, logback, log4j) allowing the end user to plug in the desired logging framework at deployment time. 也就是说, slf4j为简单的日志门面,是日志框架的抽象, 而log4j和logback是众多日志框架中的几种。 如果不添加log4j, logback, 只引入slf4j, 如何?
<dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> <version>1.7.25</version> </dependency> 复制代码
public class App { public static void main( String[] args ) { Logger logger = LoggerFactory.getLogger(App.class); logger.debug("hello world {}", "111"); } } 复制代码
从运行结果看到,由于没有给出具体的logger实现,无法在控制台输出日志。也就是说我们在具体开发中,需要绑定一个日志框架,才能正常的使用slf4j。
log4j 和 logback
log4j和logback就是两个受欢迎的日志框架。但两者又有不同。
- log4j是apache实现的一个开源日志组件。
- logback同样是由log4j的作者设计完成的,拥有更好的特性,用来取代log4j的一个日志框架。是slf4j的原生实现。
上图可以看到应用程序对日志框架的调用关系。应用程序调用slf4j api,而日志的输出最终是由底层的日志框架来实现的。这张图也提现了log4j和logback的不同。
总结:
- slf4j是java的一个日志门面,实现了日志框架一些通用的api,log4j和logback是具体的日志框架。
- 他们可以单独的使用,也可以绑定slf4j一起使用。单独使用。分别调用框架自己的方法来输出日志信息。 绑定slf4j一起使用。调用slf4j的api来输入日志信息,具体使用与底层日志框架无关(需要底层框架的配置文件)。 具体查看www.importnew.com/7450.html
如果项目同时引入log4j, logback
如果项目同时引入log4j, logback 会提示如下警告信息:
经实践发现,slf4j 会优先加载pom中先引入的那个日志模块。