五大級別(由低到高):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,便於管理。
| 類 | 用途 |
|---|---|
| ConsoleAppender | 控制台 |
| FileAppender | 固定文件 |
| DailyRollingFileAppender | 按天滾動生成新文件 |
| RollingFileAppender | 文件達指定大小滾動 |
| WriterAppender | 流形式發送到任意目標 |
配置語法:log4j.appender.名稱=全限定類名 + log4j.appender.名稱.選項=值。
| 類 | 風格 |
|---|---|
| HTMLLayout | HTML 表格 |
| PatternLayout | 靈活模式(最常用) |
| SimpleLayout | 級別 + 信息 |
| TTCCLayout | 時間、線程、類別等詳細信息 |
配置語法:log4j.appender.名稱.layout=全限定類名 + 選項。
static Logger logger = Logger.getLogger(MyClass.class.getName())PropertyConfigurator.configure("log4j.properties") 或 DOMConfigurator.configure("log4j.xml")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
| 符號 | 含義 |
|---|---|
| %-4r | 啟動毫秒數,左對齊 4 位 |
| %-5p | 級別,左對齊 5 位 |
| %d{pattern} | 時間,支援 SimpleDateFormat 模式 |
| %c | Logger 名稱(類名) |
| %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'