原文链接:https://www.oschina.net/translate/why-use-sl4j-over-log4j-for-logging
根据这个得到一些体会,如有错误,欢迎指正:
1.slf4j是日志的整体抽象层,log4j,logback,java.util.Logging都是不同的实现类,需要哪种实现方式直接引入对应的jar就行
2.SLF4J有个占位功能,类似String.format()方法中的%s
下面是你用Log4j时的做法,当然这并不好玩而且它增加了不必要的公式化的代码,减少了代码的可读性。
if (logger.isDebugEnabled()) {
logger.debug("Processing trade with id: " + id + " symbol: " + symbol);
}
而如果你使用SLF4J,你可以使用更简洁的格式达到同样的效果,如下:
logger.debug("Processing trade with id: {} and symbol : {} ", id, symbol);
3.假如使用log4j,各个jar功能如下:
slf4j-api-1.6.1.jar - JAR for SLF4J API
log4j-1.2.16.jar - JAR for Log4J API
slf4j-log4j12-1.6.1.jar - Log4J Adapter for SLF4J
4.如果使用maven管理,可以只引入如下,里面依赖会自动引入其余两个
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.6.1</version>
</dependency>