為什麼使用日誌就不想介紹了,這裡獻給所有想使用高效率日誌的log4j人門者,希望對大家有幫助。
log4j是apache組織下logging sub project 的乙個子項,可以在
下到對應版本的logging .(不要念log 四 j,是log for j)她以高靈活的外部配置方式和不輸於system.out的速度成為日誌記錄庫里的佼佼者,著名的開源orm框架hibernate預設就是採取的log4j,相當多框架中都提供了log4j的支援。(以下為log4j-1.2.12)
log4j使用很簡單,下面對應用中需要了解的幾個知識點進行一番介紹:
首先我們來看看應用**中如何使用log4j,即coding:
package edu.yclc.log4j;
import org.apache.log4j.logger;
/**
* 建立日誌輸出物件 @log
* @log a instance of logger in log4j
*/
/**
* @param args
*/
public static void main(string args)
}
log4j:warn please initialize the log4j system properly.
那麼這是個什麼問題呢?前面我們已經提到乙個簡單的log4j應用是由3個部分組成的,第乙個就是應用**,第二個呢就是你的庫(即log4j-version.jar),第三個呢,就是乙個存在於classpath根目錄下的乙個叫log4j.properties的文字檔案,採取properties的鍵值對儲存資料。這個檔案存放了log4j的所有配置資訊。這個也是log4j的核心。
那麼我們首先來看一看乙個最簡單的log4j.properties:
log4j.rootlogger =
info,sample
org.apache.log4j.patternlayout
%-5p
[%t]
%37c
/n/u4fe1/u606f
:-%m%n
那麼現在我們再看看看看輸出結果:
資訊
:-hello world
這裡我用空行把整個檔案分成了兩個部分,上半部分是一句話,大家可以通過字面上猜到他的意思,log4j的根日誌者(亂翻譯一把^v^), 在這裡這個屬性代表的意義是什麼呢?他的值描敘的是日誌輸出的級別(稍後對級別有很詳細的介紹)以及所有的輸出目的地(即日誌產生後輸出到那)。這裡設定的是info級別,只有乙個日誌輸出器,叫做sample
那麼下面的三句話呢,這裡就是每個日誌輸出器的乙個描敘,指定日誌輸出的型別,方式。
下面我們就對以上的兩部分進行詳細講解:
首先,什麼叫做輸出級別?有那些輸出級別?所謂級別,就是可以控制程式中相應資訊日誌的開關的,如果設定乙個比較高的級別,那麼在應用中,很多低階別的輸出就無法顯示。例如:debug級別小於info級別,那麼如果配置檔案中按上面設定,那麼在程式中,所有的debug(內容)都不會被記錄下來或列印出來。也就說所有低於當前設定級別的所有資訊都不會顯示。這樣有個很大的好處,在開發時,我們往往希望通過大量的除錯資訊來除錯程式,但一旦發布,這些資訊又顯得多餘,單獨刪除所有的**而重構又是乙個很繁瑣的事情,有了log4j後這個問題被很好的解決,如果你不想部分資訊顯示出來或反映到日誌裡面去,可以直接通過設定日誌級別來實現隔離這部分日誌。這間間單單就是在乙個文字檔案裡面修改幾個字母就可以做的(贊~相當靈活)。
那麼日誌級別有那些呢?分別又代表了那些級別?以log4j1.2.12為例,日誌級別有fatal、error、warn、info、debug這五種級別。其中按我剛剛寫的次序,fatal is maxium,而debug is minium。
其次,緊跟級別之後的是目的地名稱列表。既然是列表,當然不會只能是乙個名稱了,可以是多個。但注意,級別是不可以同時有多個的。名稱可以是任意合法的字串。
下面那半部分,則為若干日誌輸出目的地的配置資訊,同樣我們以以上例子為例。
第二部分:配置layout元件:log4j提供4種layout:
org.apache.log4j.htmllayout (以html**的形式布局)
org.apache.log4j.patternlayout (可以引數化的靈活布局---推薦)
org.apache.log4j.******layout (包含日誌級別和資訊字串)
org.apache.log4j.ttcclayout (包含日誌產生的時間、執行緒和類別等資訊)
%p ------日誌級別名
%t ------日誌請求執行緒
%c ------日誌發生的類名
%m%n ------資訊內容
其他還有:
%d ----輸出日誌的時間,預設格式為
iso8601
,也可以在其後指定格式,比如:
%d,輸出類似:
2023年5
月28日19
:30:22
,921
%l ------
輸出日誌事件的發生位置,包括類目名、發生的執行緒,以及在**中的行數。舉例:
至於那幾個/u開頭的數字是為了顯示中文我自己轉換的幾個中文的unicode
當然,log4j還有很多有用的屬性,以下簡單介紹幾個常用的:
當使用檔案記錄日誌的時候,需要指定檔案路徑
可以指定特定包的輸出級別,僅限於此包:
使用屬性:log4j.logger.包名 = 級別
當然,log4j的用法是很多的,還有很多靈活的應用方法,筆者也只是簡單應用,希望能給初學者帶來點幫助,希望對log4j有更好用法的大蝦不吝賜教.
log4j 應用 概念篇
log4j.properties配置檔案講解如下 log4j中有五級logger fatal 0 error 3 warn 4 info 6 debug 7 配置根logger,其語法為 log4j.rootlogger info,a1 r 這一句設定以為著所有的log都輸出 如果為log4j.ro...
log4j日誌系統 Log4j
1.1 log4j的三大核心元件 1.2 loggers 記錄器 1.4 layouts 布局 org.apache.log4j.htmllayout 以html 形式布局 org.apache.log4j.patternlayout 可以靈活地指定布局模式 org.apache.log4j.lay...
log4j的具體應用
本篇假設你已了解log4j的基本概念.下面給出乙個具體的例項 安裝環節見前面的文章 step1 配置檔案log4j.xml 在這個應用中,該檔案位於src資料夾下,編譯後編譯到class資料夾下 step2 封裝log4j 這一步並不是必須,視具體應用而定,在我的應用中,很多類要用到log4j的lo...