1. 程式人生 > >logback與log4j比較

logback與log4j比較

通用 商業 歸檔日誌 alice 應用 條件 工作量 控制 deb

  • 更快的執行速度: 基於我們先前在log4j上的工作,logback 重寫了內部的實現,在某些特定的場景上面,甚至可以比之前的速度快上10倍。在保證logback的組件更加快速的同時,同時所需的內存更加少。
  • logback-classic 非常自然的實現了SLF4J:ogback-classic中的longging類自然的實現了SLF4J。當你使用 logback-classic作為底層實現時,涉及到LF4J日記系統的問題你完全不需要考慮。更進一步來說,由於 logback-classic強烈建議使用SLF4J作為客戶端日記系統實現,如果需要切換到log4j或者其他,你只需要替換一個jar包即可,不需要去改變那些通過SLF4J API 實現的代碼。這可以大大減少更換日記系統的工作量。
  • 自動重新載入配置文件:Logback-classic可以在配置文件被修改後,自動重新載入。這個掃描過程很快,無資源爭用,並且可以動態擴展支持在上百個線程之間每秒上百萬個調用。它和應用服務器結合良好,並且在JEE環境通用,因為它不會調用創建一個單獨的線程來做掃描。
  • 優雅地從I/O錯誤中恢復:FileAppender和它的子類,包括RollingFileAppender,可以優雅的從I/O錯誤中恢復。所以,如果一個文件服務器臨時宕機,你再也不需要重啟你的應用,而日誌功能就能正常工作。當文件服務器恢復工作,logback相關的appender就會透明地和快速的從上一個錯誤中恢復。
  • 自動清除舊的日誌歸檔文件:通過設置TimeBasedRollingPolicy 或者 SizeAndTimeBasedFNATP的 maxHistory 屬性,你就可以控制日誌歸檔文件的最大數量。如果你的回滾策略是每月回滾的,並且你希望保存一年的日誌,那麽只需簡單的設置maxHistory屬性為12。對於12個月之前的歸檔日誌文件將被自動清除。
  • 自動壓縮歸檔日誌文件:RollingFileAppender可以在回滾操作中,自動壓縮歸檔日誌文件。壓縮通常是異步執行的,所以即使是很大的日誌文件,你的應用都不會因此而被阻塞。
  • 配置文件中的條件處理:開發者通常需要在不同的目標環境中變換logback的配置文件,例如開發環境,測試環境和生產環境。這些配置文件大體是一樣的,除了某部分會有不同。為了避免重復,logback支持配置文件中的條件處理,只需使用<if>,<then><else>,那麽同一個配置文件就可以在不同的環境中使用了。
  • 過濾: Logback擁有遠比log4j更豐富的過濾能力。例如,讓我們假設,有一個相當重要的商業應用部署在生產環境。考慮到大量的交易數據需要處理,記錄級別被設置為WARN,那麽只有警告和錯誤信息才會被記錄。現在,想象一下,你在開發環境遇到了一個臭蟲,但是在測試平臺中卻很難發現,因為一些環境之間(生產環境/測試環境)的未知差異。使用log4j,你只能選擇在生產系統中降低記錄的級別到DEBUG,來嘗試發現問題。但是很不幸,這會生成大量的日誌記錄,讓分析變得困難。更重要的是,多余的日誌記錄會影響到生產環境的性能。使用logback,你可以選擇保留只所有用戶的WARN級別的日誌,而除了某個用戶,例如Alice,而她就是問題的相關用戶。當Alice登錄系統,她就會以DEBUG級別被記錄,而其他用戶仍然是以WARN級別來記錄日誌。這個功能,可以通過在配置文件的XML中添加4行。請在相關章節中查找MDCFilter

logback與log4j比較