commons-logging的使用


  • 簡介

commons-logging是Apache commons類庫中的一員。Apache commons類庫是一個通用的類庫,提供了基礎的功能,比如說commons-fileupload,commons-httpclient,commons-io,commons-codes等。
commons-logging能夠選擇使用Log4j還是JDK Logging,但是他不依賴Log4j,JDK Logging的API。如果項目的classpath中包含了log4j的類庫,就會使用log4j,否則就使用JDK Logging。使用commons-logging能夠靈活的選擇使用那些日志方式,而且不需要修改源代碼。

 

  • 使用commons-logging的一個例子

commons-logging的使用類似於Log4j,他們的級別以及使用規則是完全一樣的。下面來一個demo:
首先我們要在項目中添加commons-logging的maven依賴:

[html]  view plain  copy
 
  1. <dependency>  
  2.             <groupId>commons-logging</groupId>  
  3.             <artifactId>commons-logging</artifactId>  
  4.             <version>1.2</version>  
  5.         </dependency>  

測試代碼如下:

[java]  view plain  copy
 
  1. package org.linkinpark.commons.commonslogging;  
  2.   
  3.   
  4. import org.apache.commons.logging.Log;  
  5. import org.apache.commons.logging.LogFactory;  
  6. import org.junit.Test;  
  7.   
  8.   
  9. /** 
  10.  * @創建作者: LinkinPark 
  11.  * @創建時間: 2016年2月26日 
  12.  * @功能描述: commons-logging的測試類 
  13.  */  
  14. public class CommonsLoggingTest  
  15. {  
  16.     public static Log LOG = LogFactory.getLog(CommonsLoggingTest.class);  
  17.   
  18.   
  19.     @Test  
  20.     public void test()  
  21.     {  
  22.         LOG.debug("debug()...");  
  23.         LOG.info("info()...");  
  24.         LOG.error("error()...");  
  25.     }  
  26.   
  27.   
  28. }  

1,現在我們在項目中不要添加log4j的依賴,看下效果。

運行上面的測試,junit綠條,然后控制台輸出如下:

 

[plain]  view plain  copy
 
  1. 二月 26, 2016 10:34:23 上午 org.linkinpark.commons.commonslogging.CommonsLoggingTest test  
  2. 信息: info()...  
  3. 二月 26, 2016 10:34:23 上午 org.linkinpark.commons.commonslogging.CommonsLoggingTest test  
  4. 嚴重: error()...  

前面我也說過了,JDK自帶的Logging其實是一個雞肋,竟然沒有debug的日志級別,差評。。。

 

2,現在我們在項目中添加log4j的依賴,看下效果。

只要我們在項目中添加了log4j的jar包,那么commons-logging就會自動切到log4j的日志輸出。所以現在我們不提供log4j.properties配置文件,所以控制台輸出如下:

 

 

[plain]  view plain  copy
 
  1. log4j:WARN No appenders could be found for logger (org.linkinpark.commons.commonslogging.CommonsLoggingTest).  
  2. log4j:WARN Please initialize the log4j system properly.  
  3. log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.  

現在我們添加log4j.properties配置文件:

 

[html]  view plain  copy
 
  1. log4j.rootLogger=DEBUG,console  
  2.   
  3. # 以下是rootLogger的配置,子類默認繼承,但是子類重寫下面配置=rootLogger+自己配置,我暈  
  4. #輸出到控制台     
  5. log4j.appender.console=org.apache.log4j.ConsoleAppender    
  6. #設置輸出樣式     
  7. log4j.appender.console.layout=org.apache.log4j.PatternLayout   
  8. #日志輸出信息格式為  
  9. log4j.appender.console.layout.ConversionPattern=[%-d{yyyy-MM-dd HH:mm:ss}]-[%t-%5p]-[%C-%M(%L)]: %m%n   

再次運行測試,junit綠條,然后控制台正常輸出日志:

 

[plain]  view plain  copy
 
  1. [2016-02-26 10:47:13]-[main-DEBUG]-[org.linkinpark.commons.commonslogging.CommonsLoggingTest-test(19)]: debug()...  
  2.  [2016-02-26 10:47:13]-[main- INFO]-[org.linkinpark.commons.commonslogging.CommonsLoggingTest-test(20)]: info()...  
  3.  [2016-02-26 10:47:13]-[main-ERROR]-[org.linkinpark.commons.commonslogging.CommonsLoggingTest-test(21)]: error()...  
  4.    

 

3,顯示配置commons-logging啟用log4j

默認的,common-logging會自動檢查是否使用log4j,也可以使用配置文件顯示的啟用log4j。配置文件為commons-logging.properties,放在程序的classpath下即可。
例如:

[html]  view plain  copy
 
  1. org.apache.commons.logging.Log=org.apache.commons.logging.impl.Log4J-Logger  
  2. org.apache.commons.logging.LogFactory=org.apache.commons.logging.impl.LogFactoryImpl  

關於上面的這種配置了解下就OK了,比較約定優於配置,commons-logging已經支持自動掃描了,我們就不需要人為的添加這些無聊的配置文件了。

 

 

 

  • 總結

嚴格的說,commons-logging不是一個日志控件,沒有日志功能,它只是統一了JDK Logging與Log4j的API,並把日志功能交給JDK Loggings或者是log4j。對於不能確定日志方式的系統,commons-logging是一個不錯的選擇,Spring,Hibernate,Struts等使用的都是commons-logging。下一篇我們會研究下Commons-logging的源碼,來深入的整理下Commons-logging。

 


如果有Log4j,commons-logging會把輸出原封不動的交給log4j。如果沒有log4j,commons-logging會將相應的輸出轉化成JDK Logging的輸出。


免責聲明!

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



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