首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

Log4j 完整配置指南:Logger、Appender、Layout 三大組件詳解

     編輯:Java 相關知識

核心架構:三大組件

  • Logger:日志記錄器,控制「記什麼、記到什麼級別」
  • Appender:輸出目的地,控制「輸出到哪裡」
  • Layout:輸出格式,控制「長什麼樣」

Logger:級別體系與繼承機制

五大級別(由低到高):DEBUG < INFO < WARN < ERROR < FATAL。規則:Logger 級別為 P,只有級別 Q ≥ P 的請求才會輸出。

Logger logger = Logger.getLogger("com.foo");
logger.setLevel(Level.INFO); // 通常在配置文件設定

Logger barLogger = Logger.getLogger("com.foo.Bar"); // 繼承父級別 INFO
logger.warn("Low fuel");    // WARN ≥ INFO → 輸出
logger.debug("Search...");  // DEBUG < INFO → 屏蔽
barLogger.info("Found");    // INFO ≥ INFO → 輸出
barLogger.debug("Exit");    // DEBUG < INFO → 屏蔽

命名建議:Logger.getLogger(ThisClass.class.getName()),每類一 Logger,便於管理。

Appender:五大標準輸出目的地

類用途
ConsoleAppender控制台
FileAppender固定文件
DailyRollingFileAppender按天滾動生成新文件
RollingFileAppender文件達指定大小滾動
WriterAppender流形式發送到任意目標

配置語法:log4j.appender.名稱=全限定類名 + log4j.appender.名稱.選項=值。

Layout:四大標準格式

類風格
HTMLLayoutHTML 表格
PatternLayout靈活模式(最常用)
SimpleLayout級別 + 信息
TTCCLayout時間、線程、類別等詳細信息

配置語法:log4j.appender.名稱.layout=全限定類名 + 選項。

代碼中使用三步驟

  1. 獲取 Logger:static Logger logger = Logger.getLogger(MyClass.class.getName())
  2. 讀取配置:PropertyConfigurator.configure("log4j.properties") 或 DOMConfigurator.configure("log4j.xml")
  3. 記錄日志:logger.info("message") / warn() / error() / debug()

配置文件完整範例

log4j.rootLogger=INFO, A1
log4j.appender.A1=org.apache.log4j.ConsoleAppender
log4j.appender.A1.layout=org.apache.log4j.PatternLayout
log4j.appender.A1.layout.ConversionPattern=%-4r %-5p %d{yyyy-MM-dd HH:mm:ssS} %c %m%n

PatternLayout 關鍵佔位符

符號含義
%-4r啟動毫秒數,左對齊 4 位
%-5p級別,左對齊 5 位
%d{pattern}時間,支援 SimpleDateFormat 模式
%cLogger 名稱(類名)
%m日志信息
%n換行符

輸出效果示例

0    INFO  2003-06-13 13:23:46968 ClientWithLog4j Client socket: Socket[addr=localhost/127.0.0.1,port=8002,localport=2014]
16   DEBUG 2003-06-13 13:23:46984 ClientWithLog4j Server says: 'Java server with log4j, Fri Jun 13 13:23:46 CST 2003'
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved