從log4j日志無縫遷移至logback


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的類無法工作了。

 

 

參考:

log4j-over-slf4j與slf4j-log4j12共存stack overflow異常分析

Log4j問題排查-log4j,logback到底用了哪個?


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM