003_commons-logging与slf4j和log4j与logback
1. 日志接口常用的有commons-logging和slf4j, 日志實現常用的有log4j和logback。那么, 我們應該選取什么樣的組合呢?
2. Logback是由log4j創始人設計的又一個開源日志組件。logback當前分成三個模塊: logback-core, logback- classic和logback-access。logback-core是其它兩個模塊的基礎模塊。logback-classic是log4j的一個改良版本。此外logback-classic完整實現slf4j api使你可以很方便地更換成其它日志系統如log4j或JDK14 Logging。logback-access訪問模塊與Servlet容器集成提供通過Http來訪問日志的功能。
3. logback與Log4J的比較
3.1. 更快的實現: Logback的內核重寫了, 在一些關鍵執行路徑上性能提升10倍以上。而且logback不僅性能提升了, 初始化內存加載也更小了。
3.2. Logback-classic完整實現了slf4j api: logback-classic完整實現slf4j api, 在使用slf4j中, 你都感覺不到logback-classic。因為logback-classic非常自然地實現了slf4j, 所以切換到log4j或者其他日志系統, 非常容易, 只需要提供成另一個jar包就OK, 根本不需要去動那些通過slf4j api實現的代碼。 ?
3.3. 自動重載配置文件: 當配置文件修改了, Logback-classic能自動重新加載配置文件。掃描過程快且安全, 它并不需要另外創建一個掃描線程。
3.4. 安全模式和友好恢復: 在謹慎模式下, 多個FileAppender實例跑在JVM下, 能夠安全地寫同一個日志文件。Logback的FileAppender和它的子類包括RollingFileAppender能夠非常友好地從I/O異常中恢復。
3.5. 配置文件可以處理不同的情況: 開發人員經常需要判斷不同的Logback配置文件在不同的環境下(開發, 測試, 生產)。而這些配置文件僅僅只有一些很小的不同, 就可以實現, 這樣一個配置文件就可以適應多個環境。
3.6. Filters(過濾器): 有些時候, 需要診斷一個問題, 需要打出日志。在log4j, 只有降低日志級別, 不過這樣會打出大量的日志, 會影響應用性能。在Logback, 你可以繼續保持那個日志級別而除掉某種特殊情況, 如alice這個用戶登錄, 她的日志將打在DEBUG級別而其他用戶可以繼續打在WARN級別, 要實現這個功能只需加4行XML配置。
3.7. SiftingAppender(一個多功能的Appender): 它可以用來分割日志文件根據任何一個給定的運行參數。如SiftingAppender能夠區別日志事件跟進用戶的Session, 然后每個用戶會有一個日志文件。
3.8. 自動壓縮log日志: RollingFileAppender在產生新文件的時候, 會自動壓縮已經打出來的日志文件。壓縮是個異步過程, 所以甚至對于大的日志文件, 在壓縮過程中應用不會受任何影響。
3.9. 自動去除舊日志: 通過設置SizeAndTimeBasedRollingPolicy或者TimeBasedRollingPolicy的maxHistory屬性, 你可以控制已經產生日志文件的最大數量。如果設置maxHistory為12, 那那些log文件超過12個月的都會被自動移除。
4. 當年Apache說服log4j以及其他的日志來按照commons-logging的標準編寫, 但是由于commons-logging的類加載有點問題, 實現起來也不友好, 于是乎就用有人創作了slf4j, 也因此而與commons-logging兩分天下。更加推薦slf4j+logback的組合。?
?
總結
以上是生活随笔為你收集整理的003_commons-logging与slf4j和log4j与logback的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 016_Redis集群的删除和添加节点
- 下一篇: 005_logback介绍