Log4j 是事實(shí)上的 Java 標(biāo)準(zhǔn)日志工具,。會(huì)不會(huì)用 Log4j 在一定程度上可以說是衡量一個(gè)開發(fā)人員是否是一位合格的 Java 程序員的標(biāo)準(zhǔn)。如果你是一名 Java 程序員,,如果你還不會(huì)用 Log4j,,那你真的很有必要讀一下這篇文章了。很多朋友反映想寫程序日志,,但是卻不知道怎么把日志寫到日志文件里,,而且 Java 這方面的資料似乎不多。如《如何寫log4j.xml日志配置文件》 所述,。本文詳細(xì)介紹了如何在項(xiàng)目中使用 Log4j 的步驟,,并附加了一個(gè)例子性質(zhì)的代碼。 Why Log4j,? 有的朋友喜歡用 System.out.println(String msg); 語句來調(diào)試代碼,。這個(gè)確實(shí)是一個(gè)很好的調(diào)試工具。但是隨著項(xiàng)目的結(jié)束,,或者問題的解決,,這些語句需要我們一個(gè)個(gè)地揪出來手工刪除?《如何一次性刪除所有的system.out.println語句 》,,這個(gè)帖子里的這位網(wǎng)友就遇到了這樣一個(gè)問題,。 全部都刪除干凈,問題又來了:如果以后又出現(xiàn)問題了該怎么辦呢,?難道再次添加,,問題解決后再次查找到刪除? 使用 Log4j 就可以很好地解決上面的問題和矛盾,。Log4j 有一個(gè)日志級(jí)別,,用來控制是否進(jìn)行日志記錄。其由低到高的級(jí)別如下: ALL < DEBUG < INFO < WARN < ERROR < FATAL < OFF 將日志進(jìn)行分級(jí)的目的就是在于可以靈活配置,。比如說如果日志級(jí)別限定于 DEBUG,那么包括 DEBUG 在內(nèi)的,,INFO,、WARN、ERROR,、FATAL,、OFF 都會(huì)進(jìn)行日志記錄;而如果級(jí)別定義為 INFO,,那么 INFO 以下的級(jí)別,,像 DEBUG 的日志就不會(huì)記錄。比如如下代碼:
如果你的 Log4j 定義為輸出到控制臺(tái),日志級(jí)別定義為 INFO,,那么執(zhí)行到上面語句塊,,控制臺(tái)會(huì)輸出以下日志信息: 18:07:37,237 INFOHelloWorld:32 - info通過 class 對(duì)象來獲取 logger 對(duì)象 18:07:37,245 WARNHelloWorld:34 - warn通過 class 對(duì)象來獲取 logger 對(duì)象 具體范例作者已經(jīng)上傳至附件,有興趣的朋友可以去下載下來看看,。限于時(shí)間,,例子里僅僅演示了如何將日志信息輸出到控制臺(tái)上。當(dāng)然,,日志也可以輸出到文件,、數(shù)據(jù)庫中。作者認(rèn)為,,如果弄清楚了示例代碼,,對(duì)于其他實(shí)現(xiàn)聰明的讀者完全可以參考 Log4j 的 API 自己搞定。 How to Log4j,? 第一步:下載 Log4j 工具包 ,。 官方網(wǎng)站地址:http://logging./log4j/1.2/index.html。進(jìn)入后左側(cè)菜單欄里 Documentation 下的 JavaDoc 就是 Log4j 的在線 API 文檔,。我們點(diǎn)擊 Get log4j 1.2 下 的 Download 進(jìn)入下載頁面,,最新版本是 1.2.15,點(diǎn)擊 apache-log4j-1.2.15.zip 進(jìn)行下載該文件,,解壓縮后得到 Log4j 的源代碼,、示例代碼、安裝說明和 Log4j 的 jar 包(log4j-1.2.15.jar),。 第二步:項(xiàng)目中導(dǎo)入 log4j 的 jar 包 ,。 作者開發(fā) IDE 是 eclipse,右擊項(xiàng)目名 -> Build Path -> Configure Build Path -> Add External JARS -> 找到你解壓縮得到的 log4j-1.2.15.jar 并選中,。確定,。 第三步:編輯 log4j.properties 文件,配置你的 Log4j ,。 在項(xiàng)目的 src 目錄下,,新建 log4j.properties 文件。通過這個(gè)接口對(duì) Log4j 進(jìn)行配置,。 示例代碼中作者的 log4j.properties 配置如下:
說明: “l(fā)og4j.rootLogger=INFO,stdout”句:定義根 logger 配置項(xiàng),。其語法為:級(jí)別,輸入終端1,,輸出終端2,,……。stdout 代表日志輸出到控制臺(tái),。 “l(fā)og4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE}%5p%c{1}:%L - %m%n”語句定義打印格式,。打印參數(shù)如下: %m:輸出代碼中指定的消息,。 %p:輸出優(yōu)先級(jí)。 %r:輸入自應(yīng)用啟動(dòng)到輸出該log信息耗費(fèi)的毫秒數(shù),。 %c:輸出所屬的類目,,通常就是所在類的全名。 %t:輸出產(chǎn)生該日志線程的線程名,。 %n:輸出一個(gè)回車換行符,。Windows平臺(tái)為“\r\n”,UNIX為“\n”,。 %d:輸出日志時(shí)間點(diǎn)的日期或時(shí)間,,默認(rèn)格式為ISO8601,推薦使用“%d{ABSOLUTE}”,,這個(gè)輸出格式形如:“2007-05-07 18:23:23,500”,,符合中國(guó)人習(xí)慣。 %l:輸出日志事件發(fā)生的位置,,包括類名,、線程名,以及所在代碼的行數(shù),。 第四步:代碼中需要日志記錄的地方進(jìn)行日志代碼 ,。 通過 Logger log = LogManager.getLogger(你要進(jìn)行日志的代碼所在的類.class);獲取 logger 對(duì)象,然后調(diào)用其 info,、debug 等方法進(jìn)行日志輸出,。示例代碼如下:
|
|