Java開源日志框架大比拼_第1頁
Java開源日志框架大比拼_第2頁
Java開源日志框架大比拼_第3頁
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)

文檔簡介

1、Java開源日志框架大比拼應(yīng)用系統(tǒng)中,日志是不可缺少的重要組成部分,所有的應(yīng)用的出錯信息等都應(yīng)該能在日志文 件中查找到,有的應(yīng)用系統(tǒng)日志可能數(shù)量很小,有的龐大的應(yīng)用系統(tǒng)的日志是相當(dāng)龐大,同 時日志文件必須是方便用戶定制和查找的,要具備很高的性能,否則會影響應(yīng)用系統(tǒng)的性能。應(yīng)用系統(tǒng)中,日志是不可缺少的重要組成部分,所有的應(yīng)用的出錯信息等都應(yīng)該能在日志文 件中查找到,有的應(yīng)用系統(tǒng)日志可能數(shù)量很小,有的龐大的應(yīng)用系統(tǒng)的日志是相當(dāng)龐大,同 時日志文件必須是方便用戶定制和查找的,要具備很高的性能,否則會影響應(yīng)用系統(tǒng)的性能。由于日志通常涉及到io讀寫磁盤(或者是阻塞或者是異步),這都要耗費時間。當(dāng)在大型

2、系統(tǒng)中有大量數(shù)據(jù)的時候,日志所耗費的時間就會顯現(xiàn)。在本文中,將深入探討目前Java 開源世界中領(lǐng)先的五個日志框架,在各個方面進行比較,要指出的是,本文并不是探究哪個 日志框架是最優(yōu)秀的,而只是列出各自的優(yōu)缺點。我們選取的五個日志框架分別為:Log4JLog4J2LogbackSLF4J Simple Logging (SLF4J SL)Java Util Logging (JUL)我們想對比下這些日志框架對于基本的日志記錄活動的性能如何,每一個日志操作包括時間 戳和其上下文的進程ID。我們進行如下四個方面的測評:記錄字符串常量Logging the .toString() value of a

3、 POJO 對 POJO 使用.toString()方法Logging a throwable object 記錄 throwable 對象 4 只測試.toString()方法 我們決定為每種場景進行五次的評測,通過衡量完成日紙記錄的操作次數(shù),以決定哪一個有 最佳的成績。在每次測試中讓日志引擎在一分鐘內(nèi)使用10個線程去執(zhí)行,并且剔除最大的 2次偏差,將余下的三次進行平均。在每一個單獨的日志記錄操作中,我們讓CPU在日志記錄的時候都執(zhí)行一些操作(如檢查是 否一個隨機數(shù)是否素數(shù))。這些評測的日志引擎都使用各自的默認(rèn)配置通過SLF4J來運行。 評測是在Amazon m1.large EC2實例上進

4、行的。在Log4j2的剛開始的測試中,我們設(shè)置7%C的布局參數(shù)(參考: HYPERLINK /log4j/2.x /log4j/2.x /manual/layouts.html),這增加了其開銷,在 RemkoPopma的建議下,我們更新了設(shè)置為%c(日志的名稱)以符合其他的配 置,這給Log4j2 一個性能相當(dāng)大的提升,在下面兩個圖中,值得注意的是記錄上下文的性能開銷。使用C的設(shè)置:使用C的設(shè)置:完整的測試結(jié)果集參考這個鏈接: HYPERLINK /spreadsheet/ccc?key=0Alceaf46X4GPdHBoLTdYQ29nRDh6V1dRY0 /spreadsheet/ccc

5、?key=0Alceaf46X4GPdHBoLTdYQ29nRDh6V1dRY0 0zT1FwWWc&usp=sharing下面對基于4個場景的測試結(jié)果進行具體分析:一字符串常量在 這輪比拼中,需要日志引擎使用線程和時間戳上下文去記錄字符串常量Log4j是冠軍, 比JUL能多寫270%的日志行,比logback多12.5%,比SLF4J SL多52%。有趣的是在我們 改變log4j2的配置前,它寫的行數(shù)能是比改變后的1/4左右,在更改配置后,性能排在第 三位,只比logback記錄的 行數(shù)少30%。toString() 在 這輪比拼中記錄的是POJO(使用其.toString方法),同樣使用的

6、是線程和時間戳。結(jié)果 中,對于Log4j2來說,和第一回合差不多,但相比SLF4J SL有25%的性能提升。Log4j和 Logback是并駕齊驅(qū)的,位居第三,其吞吐量是SLF4J SL的88%。Throwable在這輪比拼中,日志引擎記錄異常的對象和相關(guān)的描述信息。其中Log4j2是位居首位,其 性能比SLF4J SL高3倍,SLF4J SL位于第五位。而Log4j和Logback也是只能排在此輪的冠軍之后,記錄的行數(shù)只大概有冠軍的一半,而第 二位的反而是JUL,能記錄冠軍Log4j2的日志量的大概82%。toString ()方法比拼當(dāng) 處理服務(wù)器日志的時候,每一個日志項的上下文(例如線程ID,類的相關(guān)上下文,時間 戳等等)都是和日志內(nèi)容一樣重要。在之前的測試中,使用的是在大多數(shù)日志文件中常見 的標(biāo)志一一線程ID號和時間戳。接下來我們認(rèn)為值得去分析單純在日志中使用.toString() 方法的性能。這個時候,Log4j2是贏家(如果改變配置,能獲得180%的性能提升),贏出Logback和JUL 大概25%。SL4FJ SL則落敗。在每輪的五次測試中,SLF4J SL在啟用appende

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論