slf4j+logback應用


slf4j+logback替代commons-logging+log4j

  1. 加載如下jar包:
    slf4j-api.jar
    logback-core.jar
    logback-classic.jar
    log4j-over-slf4j.jar
    jcl104-over-slf4j.jar
  2. 同時刪除commons-logging.jar和log4j.jar
  3. http://logback.qos.ch/translator/Welcome.do轉換log4j.properties爲logback.xml 

體會

 在目前大量開源框架使用commons-logging和log4j的狀況下,單純切換到 slf4j沒有什麼必要,除了多了些日誌接口,加強了參數設置,沒有本質上的改進;而 slf4j+ logback的聯合方式仍是有前景的,同原先的log4j相比 logback有如下改進:
  1. 支持按文件大小或基於時間的切分方式,可自定義命名模式
  2. 支持文件打包(觸發器方式)
  3. 支持OSGI環境
 
 

FAQ

問題1:org.slf4j.impl.StaticLoggerBinder.SINGLETON

產生緣由: slf4j-1.5.5+ logback-0.9.13使用時會報該錯誤
解決:升級 slf4j到1.5.6
 

問題2:Failed to load class org.slf4j.impl.StaticLogger

產生緣由: slf4j未找到具體的日誌實現
解決:選擇一種日誌實現放入類路徑中,可選實現有: slf4j-nop.jar , slf4j-simple.jar , slf4j-log4j12.jar , slf4j-jdk14.jar or logback-classic.jar
 
 

問題3:java.lang.NoClassDefFoundError: org/codehaus/janino/ExpressionEvaluator

產生緣由:未加載janino.jar。
說明:在使用ch.qos. logback.classic.net.SMTPAppender的時候發生。 Janino是一種內嵌的開源Java編譯器。Janino並非一種提供給開發人員編譯程序的編譯器,而是Java程序在運行時編譯Java代碼的編譯器。Janino經過動態編譯代碼,從而提升了程序的性能。
解決:將janino.jar加入類路徑
相關文章
相關標籤/搜索