原文鏈接: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>