LOGBack:Java日誌的新進展

來源:互聯網
上載者:User

Ceki Gülcü在Java日誌領域世界知名。他創造了Log4J,這個最早的Java日誌架構即便在JRE內建日誌功能的競爭下仍然非常流行。隨後他又著手實現SLF4J這個“簡單的日誌前端介面(Façade)”來替代Jakarta Commons-Logging。

在過去的一年中,Ceki在從事他的新項目,LOGBack,一個“可靠、通用、快速而又靈活的Java日誌架構”。自一年前發布0.1 alpha版以來,LOGBack已經取得了長足的進步。1.0版即將發布,又有早期使用者的正面評價,我們也應該仔細看看LOGBack,到底適不適合我們的需要。

Xavier Hanin 談論了他使用LOGBack的經驗:

我已經用了LOGBack幾個月,我被它打動了。

文檔和支援都很完善,日誌功能簡潔利落,效能表現也說得上風馳電掣,還有創新的Eclipse外掛程式,我終於給勞苦功高的Log4J找到了接班人。

Rob Willams 補充說:

噢,還有,我們當初毅然決定採用LogBack。愛死它了。整個過渡過程一點麻煩都沒有,我們絕對喜歡它的新文法。

他所說的新文法讓LOGBack能夠處理許多複雜的日誌語句,而不再需要事先檢查記錄層級(logging level),同時效能上的影響微不足道。比如在Log4J裡面,你可能會這樣寫:

  if( logger.isDebugEnabled() ) {
logger.debug( "User with account " +
user.getAccount() + " failed authentication; " +
"supplied crypted password " + user.crypt(password) +
" does not match." );
}

等價的LOGBack語句如下:

  logger.debug( "User with account {} failed authentication; " +
"supplied crypted password {} does not match.",
user.getAccount(), user.crypt(password) );

LOGBack把拼裝訊息的代價延遲到它能夠確定是不是要顯示這條訊息的時候。不過擷取參數的高昂代價並沒有被延遲支付,比如上例中的密碼加密。

LOGBack還聲稱自己效能更佳:

某些關鍵操作,比如判定是否記錄一條日誌語句的操作,其效能得到了顯著的提高。這個操作在LOGBack中需要3納秒,而在Log4J中則需要30納秒。LOGBack建立記錄器(logger)的速度也更快:13毫秒,而在Log4J中需要23毫秒。更重要的是,它擷取已存在的記錄器只需94納秒,而Log4J需要2234納秒,時間減少到了1/23。跟JUL相比的效能提高也是顯著的。

LOGBack還可以被整合,目前已經有了一個Eclipse外掛程式和一個JMX Configurator Bean。

InfoQ就LOGBack訪問了Ceki,第一個問題是大家都關心的:為什麼要建立另一個日誌架構,而不是把這些改進放到Log4J中去?

我當時(今天也還部分地)覺得在Apache Logging Services項目之外做創新會容易一些。不要誤會我的意思,我對Apache Software Foundation的評價很高,它是一個獨特的,而且在很多方面都極其出色的組織。誰也說不定,可能有一天SLF4J和LOGBack成為日誌領域新的事實標準的時候,會重新融入Apache。

關於SLF4J的接受程度:

現在有幾個重量級項目,比如Hibernate、Jetty、Spring-OSGi和Wicket都已經遷移到了SLF4J API,我可以毫不慚愧地說,SLF4J的吸引力不可忽視。SLF4J正在四處冒出頭來,雖然Jakarta Commons Logging(JCL)這個廣泛使用的類庫,在Apache品牌的溫暖陽光沐浴下,佔據著整個疆域。考慮到開始時的劣勢,SLF4J現在的表現已經超過了我們的預期。

當被問到如何比較LOGBack的免費文檔,和Log4J那種小部分免費大部分商業的文檔時:

如你所說,Log4J只提供了有限的免費文檔,完善的文檔則需要付費。對於LOGBack,我們採納了另一種途徑,我們所有的文檔都可以在我們的專案網站上直接看到,擷取也完全免費,這給了Java開發人員們又一個理由轉移到LOGBack。另外,LOGBack的市場佔有率比Log4J要低一個數量級,銷售LOGBack的文檔沒有任何經濟上的意義。

為了保證項目的長期經濟支援,我們開發了一個跟LOGBack稍稍相關的產品,過幾周就會推出。我們對LOGBack的長期計劃是不搞任何噱頭,把它發展成一個合作性的開源項目。至於“合作性”,我的意思是開方給所有開發人員作貢獻,而不局限於現在的Team Dev。

請說說離1.0版發布還差些什麼:

對於即將到來的1.0版,大部分重要的東西都已經齊備了。我們還要修複很多錯誤,但主要的工作還是完善文檔,做更多的測試,一再重複做這些事情。我說過要完善文檔沒?

在日誌這個領域還有很多東西需要我們去做,可能要好幾代人才能完成。我們已經逐漸看清了前面的路途,希望能夠給未來鋪平一些道路。

當被問到LOGBack有哪些能夠吸引開發人員的地方:

沒有絕對的答案。有些使用者可能會覺得效能是一個值得轉移到LOGBack的理由,其他人可能覺得Log4J已經不錯。雖然我和其他LOGBack開發人員們正努力給使用者更多的理由,不過我們中間很多人對於能夠從事一個強調品質的軟體項目已經很滿意。我們必須“吃我們自己的狗食”,並在這個過程中得到有價值的軟體開發技能——按今天的標準來說並不壞。考慮到LOGBack項目的出發點正是Log4J項目的不及之處,只要我們持續不斷地改進LOGBack,我們相信一定會有越來越多的Java開發人員接受SLF4J/LOGBack的組合。

因為SLF4J和LOGBack可以橋接其他競爭性的API,開發人員們可以在他們的項目中用LOGBack替換Log4J(通過log4j-bridge.jar)和Jakarta Commons-Logging(通過jcl104-over-slf4j.jar),因而不必僅僅為了使用LOGBack而被迫在同一個項目中配置好幾個日誌架構。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.