java jar log4j_使用Log4j
前面介紹了Commons Logging,可以作為“日志接口”來使用。而真正的“日志實現(xiàn)”可以使用Log4j。
Log4j是一種非常流行的日志框架,最新版本是2.x。
Log4j是一個組件化設(shè)計的日志系統(tǒng),它的架構(gòu)大致如下:
log.info("User signed in.");
│
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐
├──>│ Appender │───>│ Filter │───>│ Layout │───>│ Console │
│ └──────────┘ └──────────┘ └──────────┘ └──────────┘
│
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐
├──>│ Appender │───>│ Filter │───>│ Layout │───>│ File │
│ └──────────┘ └──────────┘ └──────────┘ └──────────┘
│
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐
└──>│ Appender │───>│ Filter │───>│ Layout │───>│ Socket │
└──────────┘ └──────────┘ └──────────┘ └──────────┘
當(dāng)我們使用Log4j輸出一條日志時,Log4j自動通過不同的Appender把同一條日志輸出到不同的目的地。例如:
console:輸出到屏幕;
file:輸出到文件;
socket:通過網(wǎng)絡(luò)輸出到遠程計算機;
jdbc:輸出到數(shù)據(jù)庫
在輸出日志的過程中,通過Filter來過濾哪些log需要被輸出,哪些log不需要被輸出。例如,僅輸出ERROR級別的日志。
最后,通過Layout來格式化日志信息,例如,自動添加日期、時間、方法名稱等信息。
上述結(jié)構(gòu)雖然復(fù)雜,但我們在實際使用的時候,并不需要關(guān)心Log4j的API,而是通過配置文件來配置它。
以XML配置為例,使用Log4j的時候,我們把一個log4j2.xml的文件放到classpath下就可以讓Log4j讀取配置文件并按照我們的配置來輸出日志。下面是一個配置文件的例子:
%d{MM-dd HH:mm:ss.SSS} [%t] %-5level %logger{36}%n%msg%n%n
log/err.log
log/err.%i.log.gz
雖然配置Log4j比較繁瑣,但一旦配置完成,使用起來就非常方便。對上面的配置文件,凡是INFO級別的日志,會自動輸出到屏幕,而ERROR級別的日志,不但會輸出到屏幕,還會同時輸出到文件。并且,一旦日志文件達到指定大小(1MB),Log4j就會自動切割新的日志文件,并最多保留10份。
有了配置文件還不夠,因為Log4j也是一個第三方庫,我們需要從這里下載Log4j,解壓后,把以下3個jar包放到classpath中:
log4j-api-2.x.jar
log4j-core-2.x.jar
log4j-jcl-2.x.jar
因為Commons Logging會自動發(fā)現(xiàn)并使用Log4j,所以,把上一節(jié)下載的commons-logging-1.2.jar也放到classpath中。
要打印日志,只需要按Commons Logging的寫法寫,不需要改動任何代碼,就可以得到Log4j的日志輸出,類似:
03-03 12:09:45.880 [main] INFO com.itranswarp.learnjava.Main
Start process...
最佳實踐
在開發(fā)階段,始終使用Commons Logging接口來寫入日志,并且開發(fā)階段無需引入Log4j。如果需要把日志寫入文件,
只需要把正確的配置文件和Log4j相關(guān)的jar包放入classpath,就可以自動把日志切換成使用Log4j寫入,無需修改任何代碼。
練習(xí)
根據(jù)配置文件,觀察Log4j寫入的日志文件。
小結(jié)
通過Commons Logging實現(xiàn)日志,不需要修改代碼即可使用Log4j;
使用Log4j只需要把log4j2.xml和相關(guān)jar放入classpath;
如果要更換Log4j,只需要移除log4j2.xml和相關(guān)jar;
只有擴展Log4j時,才需要引用Log4j的接口(例如,將日志加密寫入數(shù)據(jù)庫的功能,需要自己開發(fā))。
總結(jié)
以上是生活随笔為你收集整理的java jar log4j_使用Log4j的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java actionsupport_s
- 下一篇: java课程设计进程管理_GitHub