logback與log4j比較
- 更快的執行速度: 基於咱們先前在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
歡迎關注本站公眾號,獲取更多信息