| 綁定器 JAR | 綁定目標 |
| slf4j-log4j12-x.x.jar | Log4j 1.x |
| logback-classic-x.x.jar | Logback (原生實現 SLF4J) |
| slf4j-jdk14-x.x.jar | java.util.logging |
SLF4J 啟動時掃描類路徑,自動綁定第一個發現的實現,控制台輸出綁定信息。
3. Maven 依賴最佳實踐
<!-- 門面 -->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.36</version>
</dependency>
<!-- 實現:推薦 Logback -->
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>1.2.11</version>
</dependency>
<!-- 避免傳遞依賴引入舊綁定 -->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>jcl-over-slf4j</artifactId> <!-- 導向 commons-logging -->
<version>1.7.36</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>jul-to-slf4j</artifactId> <!-- 導向 jul -->
<version>1.7.36</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>log4j-over-slf4j</artifactId> <!-- 導向 log4j 1.x -->
<version>1.7.36</version>
</dependency>
4. 代碼規範
private static final Logger log = LoggerFactory.getLogger(CurrentClass.class);
// 佔位符延遲計算,避免字符串拼接開銷
log.debug("User {} logged in from IP {}", userName, ip);
// 異常堆棧直接傳入
log.error("Order processing failed", e);
5. 避坑指南
- ❌ 類路徑同時存在多個綁定器 → 啟動警告,行為不可預期。
- ❌ 直接依賴
log4j:log4j 而非 slf4j-log4j12 → 繞過門面,失去切換靈活性。
- ✅ 統一門面,生產環境推薦 Logback(性能更好、原生支持 SLF4J、配置熱加載)。
- 上一篇文章: String、StringBuffer、StringBuilder 內存模型與常量池深度解析
- 下一篇文章: Java 枚舉類型完全指南:從基礎到高級模式
Copyright ©
程式碼之家 All Rights Reserved