Log4j 作為 Java 領域最經典的日誌框架,掌握其核心三大組件——Logger、Appender、Layout——是靈活控制日誌輸出的關鍵。本文整理實戰中常用的配置要點與效能優化技巧。
| 類別 | 用途 |
|---|---|
ConsoleAppender | 輸出到控制台(System.out / System.err) |
FileAppender | 輸出到指定檔案,支援追加模式 |
DailyRollingFileAppender | 按日期自動滾動產生新日誌檔 |
RollingFileAppender | 檔案達到指定大小自動滾動 |
WriterAppender | 以流形式發送到任意指定目標 |
| 類別 | 特點 |
|---|---|
HTMLLayout | HTML 表格形式,適合瀏覽器查看 |
PatternLayout | 靈活指定模式,最常用 |
SimpleLayout | 僅含級別與訊息 |
TTCCLayout | 含時間、執行緒、類別等詳細資訊 |
| 符號 | 含義 |
|---|---|
| %M | 輸出日誌請求所在的方法名 |
| %m | 輸出應用程式提供的訊息 |
| %l | 輸出生成日誌事件的呼叫者位置 |
| %L | 輸出程式碼行號 |
| %p | 輸出日誌事件優先級 |
| %n | 平台相關換行符 |
| %r | 應用啟動至今的毫秒數 |
| %F | 輸出檔案名 |
| %d | 輸出日誌事件日期 |
| %c | 輸出日誌事件類別 |
| %C | 輸出呼叫者完整類名 |
高頻呼叫 log.debug() 時,務必先判斷級別:
if (log.isDebugEnabled()) {
log.debug("訊息構建開銷大的內容: " + expensiveOperation());
}
避免在 DEBUG 級別關閉時仍執行字串拼接、物件序列化等昂貴操作,可大幅降低執行時間。
layout:通常設為 PatternLayout。Threshold:設定該 Appender 的最低輸出級別。各 Appender 專有屬性:
Target(System.out / System.err)。File(檔案路徑)、Append(是否追加)。MaxFileSize、MaxBackupIndex。參考資源:CSDN Log4j 詳細教程