ogback對比log4j的有點在此就不贅述了。
由於在項目的原有代碼中,大量的日志生成是通過log4j實現的,新的代碼希望通過logback的方式生成日志,同時希望將老的代碼在不修改的情況下直接將日志生成至logback指定配置中。
log4j遷移到logback 此文中介紹了一種遷移方式,但是需要修改代碼,此種遷移風險太高。
《slf4j官方文檔》傳統橋接API 一文中介紹了使用log4j-over-slf4j.jar替代log4j.jar,通過橋接的方式將原有的日志生成至logback配置中。
log4j-over-slf4j.jar下載地址:Log4j Implemented Over SLF4J , Maven中央倉庫信息速查
老的使用log4j生成日志代碼
package com.spike.test; import java.io.IOException; import java.sql.SQLException; import org.apache.log4j.Logger; public class Log4jExample { static Logger log = Logger.getLogger(Log4jExample.class.getName()); public static void main(String[] args)throws IOException,SQLException{ log.debug("Debug"); log.info("Info"); log.error("error"); System.out.println(Log4jExample.class.getName()+" test"); } }
將log4j-over-slf4j.jar導入至項目,排除log4j.jar,配置好使用logback需要的環境,日志生成至logback.xml配置指定的文件中
2016-11-03 14:14:31,799 [DEBUG] [main] com.spike.test.Log4jExample [LogbackExample.java : 18] Debug 2016-11-03 14:14:31,803 [INFO] [main] com.spike.test.Log4jExample [LogbackExample.java : 19] Info 2016-11-03 14:14:31,803 [ERROR] [main] com.spike.test.Log4jExample [LogbackExample.java : 20] error com.spike.test.Log4jExample test
至此,在不改變代碼的條件下遷移至logback成功。
但是發現一個小的問題,就是例如繼承了HTMLLayout,Layout的類無法工作了。
參考: