SLF4J(Simple Logging Facade for Java)是日誌系統的簡單門面,允許使用者在部署時決定具體的日誌實現(Log4j、Logback、java.util.logging 等)。相比 Apache Commons Logging 或直接依賴 Log4j,SLF4J 提供了參數化日誌特性,顯著提升性能與可讀性。
// SLF4J 風格:佔位符 {}
log.debug("Found {} records matching filter: '{}'", records, filter);
// 傳統字串拼接
log.debug("Found " + records + " records matching filter: '" + filter + "'");
優勢:
toString()。try {
// 業務邏輯
} catch (Exception e) {
// 直接將異常作為最後一個參數傳入
log.error("Failed to process order {}", orderId, e);
}
無需手動拼接堆疊資訊,完美適配常見日誌場景。
Logger 的繼承通過命名規則實現:
com.example.service 是 com.example 的子 Logger。additivity="false"。LoggerFactory.getLogger(CurrentClass.class),利於層級控制。<logger name="..." additivity="false"/>。slf4j-api、logback-classic、logback-core。log4j.jar,改用 log4j-over-slf4j 橋接舊代碼對 Log4j API 的調用。log4j.properties/xml 重寫為 logback.xml。