天天看點

日志元件logback介紹及配置使用方法一、logback的介紹二、logback取代 log4j的理由:三、Logback的配置介紹四、Logback的預設配置五、在程式用引用Logback

logback是由log4j創始人設計的又一個開源日志元件。logback目前分成三個子產品:logback-core,logback- classic和logback-access。logback-core是其它兩個子產品的基礎子產品。logback-classic是log4j的一個 改良版本。此外logback-classic完整實作slf4j api使你可以很友善地更換成其它日志系統如log4j或jdk14 logging。logback-access通路子產品與servlet容器內建提供通過http來通路日志的功能。 logback要與slf4j結合起來用,兩個元件的官方網站如下:

本文章用到的元件如下:請自行到官方網站下載下傳!

logback-access-1.0.0.jar

logback-classic-1.0.0.jar

logback-core-1.0.0.jar

slf4j-api-1.6.0.jar

logback和log4j是非常相似的,如果你對log4j很熟悉,那對logback很快就會得心應手。下面列了logback相對于log4j的一些優點:

更快的實作 logback的核心重寫了,在一些關鍵執行路徑上性能提升10倍以上。而且logback不僅性能提升了,初始化記憶體加載也更小了。

非常充分的測試 logback經過了幾年,數不清小時的測試。logback的測試完全不同級别的。在作者的觀點,這是簡單重要的原因選擇logback而不是log4j。

logback-classic非常自然實作了slf4j logback-classic實作了 slf4j。在使用slf4j中,你都感覺不到logback-classic。而且因為logback-classic非常自然地實作了slf4j, 所 以切換到log4j或者其他,非常容易,隻需要提供成另一個jar包就ok,根本不需要去動那些通過slf4japi實作的代碼。

非常充分的文檔 官方網站有兩百多頁的文檔。

自動重新加載配置檔案 當配置檔案修改了,logback-classic能自動重新加載配置檔案。掃描過程快且安全,它并不需要另外建立一個掃描線程。這個技術充分保證了應用程式能跑得很歡在jee環境裡面。

lilith lilith是log事件的觀察者,和log4j的chainsaw類似。而lilith還能處理大數量的log資料 。

謹慎的模式和非常友好的恢複 在謹慎模式下,多個fileappender執行個體跑在多個jvm下,能 夠安全地寫道同一個日志檔案。rollingfileappender會有些限制。logback的fileappender和它的子類包括 rollingfileappender能夠非常友好地從i/o異常中恢複。

配置檔案可以處理不同的情況 開發人員經常需要判斷不同的logback配置檔案在不同的環境下(開發,測試,生産)。而這些配置檔案僅僅隻有一些很小的不同,可以通過,和來實作,這樣一個配置檔案就可以适應多個環境。

filters(過濾器) 有些時候,需要診斷一個問題,需要打出日志。在log4j,隻有降低日志級别,不過這樣會打出大量的日志,會影響應用性能。在logback,你可以繼續 保持那個日志級别而除掉某種特殊情況,如alice這個使用者登入,她的日志将打在debug級别而其他使用者可以繼續打在warn級别。要實作這個功能隻需 加4行xml配置。可以參考mdcfilter 。

siftingappender(一個非常多功能的appender) 它可以用來分割日志檔案根據任何一個給定的運作參數。如,siftingappender能夠差別日志事件跟進使用者的session,然後每個使用者會有一個日志檔案。

自動壓縮已經打出來的log rollingfileappender在産生新檔案的時候,會自動壓縮已經打出來的日志檔案。壓縮是個異步過程,是以甚至對于大的日志檔案,在壓縮過程中應用不會受任何影響。

堆棧樹帶有包版本 logback在打出堆棧樹日志時,會帶上包的資料。

自動去除舊的日志檔案 通過設定timebasedrollingpolicy或者sizeandtimebasedfnatp的maxhistory屬性,你可以控制已經産生日志檔案的最大數量。如果設定maxhistory 12,那那些log檔案超過12個月的都會被自動移除。

總之,logback比log4j太優秀了,讓我們的應用全部建立logback上吧 !

logger作為日志的記錄器,把它關聯到應用的對應的context上後,主要用于存放日志對象,也可以定義日志類型、級别。

appender主要用于指定日志輸出的目的地,目的地可以是控制台、檔案、遠端套接字伺服器、 mysql、postresql、 oracle和其他資料庫、 jms和遠端unix syslog守護程序等。

layout 負責把事件轉換成字元串,格式化的日志資訊的輸出。

各個logger 都被關聯到一個 loggercontext,loggercontext負責制造logger,也負責以樹結構排列各logger。其他所有logger也通過org.slf4j.loggerfactory 類的靜态方法getlogger取得。 getlogger方法以 logger名稱為參數。用同一名字調用loggerfactory.getlogger 方法所得到的永遠都是同一個logger對象的引用。

logger 可以被配置設定級别。級别包括:trace、debug、info、warn 和 error,定義于ch.qos.logback.classic.level類。如果 logger沒有被配置設定級别,那麼它将從有被配置設定級别的最近的祖先那裡繼承級别。root logger 預設級别是 debug。

列印方法決定記錄請求的級别。例如,如果 l 是一個 logger 執行個體,那麼,語句 l.info(“..”)是一條級别為 info的記錄語句。記錄請求的級别在高于或等于其 logger 的有效級别時被稱為被啟用,否則,稱為被禁用。記錄請求級别為 p,其 logger的有效級别為 q,隻有則當 p>=q時,該請求才會被執行。

該規則是 logback 的核心。級别排序為:

trace < debug < info < warn < error

如果配置檔案 logback-test.xml 和 logback.xml 都不存在,那麼 logback 預設地會調用basicconfigurator ,建立一個最小化配置。最小化配置由一個關聯到根 logger 的consoleappender 組成。輸出用模式為%d{hh:mm:ss.sss} [%thread] %-5level %logger{36} - %msg%n 的 patternlayoutencoder 進行格式化。root logger 預設級别是 debug。

logback 配置檔案的文法非常靈活。正因為靈活,是以無法用 dtd 或 xml schema 進行定義。盡管如此,可以這樣描述配置檔案的基本結構:以<code>&lt;configuration&gt;</code>開頭,後面有零個或多個<code>&lt;appender&gt;</code>元素,有零個或多個<code>&lt;logger&gt;</code>元素,有最多一個<code>&lt;root&gt;</code>元素。

(1) 嘗試在 classpath 下查找檔案 logback-test.xml;

(2) 如果檔案不存在,則查找檔案 logback.xml;

(3) 如果兩個檔案都不存在,logback 用 bas icconfigurator 自動對自己進行配置,這會導緻記錄輸出到控制台。

轉載:http://blog.csdn.net/foreverling/article/details/51393047