Logback是log4j的改良版,相比log4j,logback是有優勢的,後面會簡單介紹。
Logback簡介
1、logback和log4j是同一個作者,logback可以看作是log4j的升級版
2、logback分為三個模塊, logback-core, logback-classic 和logback-access,其中 logback-core是核心,其他兩個模塊依賴core,這個logback-classic是log4j的改善版本,並且原生實現了SLF4J門面(具體參考前文:SLF4J實現原理(簡單分析))。模塊logback-access可以集成於Servlet容器,比如Tomact和Jetty。
3、你可以基於logback-core自己創建其他的模塊。
Logback相比log4j的優勢,
1、比log4j更快,重寫了內核,在一些關鍵路徑上性能提升10倍,內存佔用也更少。
2、經過大量的測試,和log4j測試不在一個量級。
3、logback-classic是SLF4J的實現,切換其他日誌框架非常方便,
4、文檔豐富並且不斷更新,支持Groovy風格的配置文件
6、配置文件自動重新加載,如果更新了配置文件,logback-classic可以自動重新加載。
7、自動刪除日期較老的日誌文件,maxHistory屬性,你可以控制已經產生日誌文件的最大數量。如果設置maxHistory為12,那那些log文件超過12個月的都會被自動移除。
8、自動壓縮歸檔的日誌文件,壓縮文件是異步進行,不影響應用。
9、配置文件可以處理不同的環境開發,測試,生產),這樣一個配置文件就可以適應多個環境。
10、SiftingAppender(一個非常多功能的Appender)
它可以用來分割日誌文件根據任何一個給定的運行參數。如,SiftingAppender能夠區別日誌事件跟進用戶的Session,然後每個用戶會有一個日誌文件。
Logback的簡單應用,
在上文SLF4J實現原理(簡單分析)中有個簡單的例子,此文不再重複。
Logback的配置
配置加載的順序,上下文初始化的時候會調用ContextInitializer,在這個類中的方法findURLOfDefaultConfigurationFile是用來加載默認的配置文件,
- 先從系統的屬性中獲取鍵為logback.configurationFile的值,如果有,就加載指定的配置文件,
- 如果沒有設置,會在classpath中找文件logback-test.xml
- 如果logback-test.xml不存在,搜索logback.groovy配置文件
- 如果logback.groovy不存在,最後查找logback.xml
- 如果以上配置文件不存在,會用SPI的方式加載classpath下的Configurator接口的實現類。
- 最後,如果以上都沒有成功,會默認創建BasicConfigurator實例,BasicConfigurator默認配置了ConsoleAppender,也就是隻能輸出到控制檯。
logback的配置
1、最簡單的使用就是不使用任何配置文件,用默認的Console輸出日誌,
2、使用logback.xml配置文件
最基本的配置是一個configuration裡面有零個或多個appender,零個或多個logger和最多一個root標 籤組成。(logback是對大小寫敏感的)
- configuration是根標籤,有三個屬性debug,scan和scanPeriod,debug=true時會打印出logback內部的狀態,scan=true表示如果配置修改了,會重新加載模式為true,scanPeriod為掃描時間間隔。
- logger標籤用來設置某一個包或具體的某一個類的日誌輸出,有個level屬性,用來設置日誌級別,可選值為TRACE,DEBUG,INFO,WARN, ERROR, ALL 和 OFF。logger標籤可以包括零個或者多個appender-ref標籤。
- root標籤配置root logger,這個標籤和logger一樣有個level,也有零個或者多個appender-ref標籤。
- Appender標籤,負責寫日誌的組件,有兩個必要屬性name和class,name指定appender名稱,class指定appender的全限定名。這個Appender可以有零個或者多個layout,encoder和filter標籤。appender的class 類型主要有三種:ConsoleAppender、FileAppender、RollingFileAppender。
每個標籤都有很多細節,就不在本文囉嗦的寫了,如果需要請參考logback的官網。寫一個簡單的logback的開發配置
如果項目中有複雜的需求,可以去官網找相應的文檔,不變的永遠是變化,軟件可能隨時升級,官方的文檔也會不斷的更新。