生活随笔
收集整理的這篇文章主要介紹了
Apache Commons-logging使用实例
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
1.Commons-Loggin簡介
Jakarta Commons Logging (JCL)提供的是一個日志(Log)接口(interface),同時兼顧輕量級和不依賴于具體的日志實現(xiàn)工具。它提供給中間件/日志工具開發(fā)者一個簡單的日志操作抽象,允許程序開發(fā)人員使用不同的具體日志實現(xiàn)工具。用戶被假定已熟悉某種日志實現(xiàn)工具的更高級別的細節(jié)。JCL提供的接口,對其它一些日志工具,包括Log4J, Avalon LogKit, and JDK 1.4等,進行了簡單的包裝,此接口更接近于Log4J和LogKit的實現(xiàn)。
2.快速入門
JCL有兩個基本的抽象類:Log(基本記錄器)和LogFactory(負責創(chuàng)建Log實例)。當commons-logging.jar被加入到 CLASSPATH之后,它會合理地猜測你想用的日志工具,然后進行自我設(shè)置,用戶根本不需要做任何設(shè)置。默認的LogFactory是按照下列的步驟去發(fā)現(xiàn)并決定那個日志工具將被使用的(按照順序,尋找過程會在找到第一個工具時中止):
1.尋找當前factory中名叫org.apache.commons.logging.Log配置屬性的值
2.尋找系統(tǒng)中屬性中名叫org.apache.commons.logging.Log的值
3.如果應(yīng)用程序的classpath中有l(wèi)og4j,則使用相關(guān)的包裝(wrapper)類(Log4JLogger)
4.如果應(yīng)用程序運行在jdk1.4的系統(tǒng)中,使用相關(guān)的包裝類(Jdk14Logger)
5.使用簡易日志包裝類(SimpleLog)
org.apache.commons.logging.Log的具體實現(xiàn)有如下:
-org.apache.commons.logging.impl.Jdk14Logger 使用JDK1.4。
-org.apache.commons.logging.impl.Log4JLogger 使用Log4J。
-org.apache.commons.logging.impl.LogKitLogger 使用 avalon-Logkit。
-org.apache.commons.logging.impl.SimpleLog common-logging自帶日志實現(xiàn)類。它實現(xiàn)了Log接口,把日志消息都輸出到系統(tǒng)錯誤流System.err 中。?
-org.apache.commons.logging.impl.NoOpLog common-logging自帶日志實現(xiàn)類。它實現(xiàn)了Log接口。 其輸出日志的方法中不進行任何操作。
3.使用JCL開發(fā)
因為Log4j的強大,同時開發(fā)者又不希望對Log4j的依賴性太強。所以目前比較流行的是Commons-logging和Log4j結(jié)合使用。
1. 部署日志器
下載commons-logging.jar和log4j.jar包,能后把它們放到工程的lib目錄下,引入工程中。
2. 指定日志器
在屬性文件common-logging.properties中設(shè)置實現(xiàn)接口的類。如下(這里設(shè)置Log4j為所使用的日志包):
#commons-logging.properties 文件配置信息 # org.apache.commons.logging.Log=org.apache.commons.logging.impl.SimpleLog # Must be one of ("trace", "debug", "info", "warn", "error", or "fatal"). # 利用 log4j 為輸出介質(zhì) org.apache.commons.logging.Log= org.apache.commons.logging.impl.Log4JCategoryLog #JDK5 Logger #org.apache.commons.logging.Log=org.apache.commons.logging.impl.Jdk14Logger
3.org.apache.commons.logging.Log接口中定義的方法,按嚴重性由高到低的順序有:
log.fatal(Object message); log.fatal(Object message, Throwable t); log.error(Object message); log.error(Object message, Throwable t); log.warn(Object message); log.warn(Object message, Throwable t); log.info(Object message); log.info(Object message, Throwable t); log.debug(Object message); log.debug(Object message, Throwable t); log.trace(Object message); log.trace(Object message, Throwable t);
除此以外,還提供下列方法以便代碼保護。
log.isFatalEnabled(); log.isErrorEnabled(); log.isWarnEnabled(); log.isInfoEnabled(); log.isDebugEnabled(); log.isTraceEnabled();
4.信息級別
確保日志信息在內(nèi)容上和反應(yīng)問題的嚴重程度上的恰當,是非常重要的。
1)fatal非常嚴重的錯誤,導(dǎo)致系統(tǒng)中止。期望這類信息能立即顯示在狀態(tài)控制臺上。
2)error其它運行期錯誤或不是預(yù)期的條件。期望這類信息能立即顯示在狀態(tài)控制臺上。
3)warn使用了不贊成使用的API、非常拙劣使用API, '幾乎就是'錯誤, 其它運行時不合需要和不合預(yù)期的狀態(tài)但還沒必要稱為 "錯誤"。期望這類信息能立即顯示在狀態(tài)控制臺上。
4)info運行時產(chǎn)生的有意義的事件。期望這類信息能立即顯示在狀態(tài)控制臺上。
5)debug系統(tǒng)流程中的細節(jié)信息。期望這類信息僅被寫入log文件中。
6)trace更加細節(jié)的信息。期望這類信息僅被寫入log文件中。
通常情況下,記錄器的級別不應(yīng)低于info.也就是說,通常情況下debug的信息不應(yīng)被寫入log文件中。
4.Apache Commons-logging使用流程
1)將common-logging.jar 包加入到環(huán)境變量或者classpath。
2)導(dǎo)入org.apache.commons.logging.Log;org.apache.commons.logging.LogFactory;及相關(guān)包
3)在需要使用logging的地方獲取Log實例。
private static Log log = LogFactory.getLog(Test. class );
4)使用Logger對象的debug,info,fatal...方法。
log .debug( "Debug info." );
5.Apache Commons-logging使用示例
Test.java
package sample; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; public class Test { ??? private static Log log = LogFactory.getLog(Test. class ); ??? public void log(){ ?????? log .debug( "Debug info." ); ?????? log .info( "Info info" ); ?????? log .warn( "Warn info" ); ?????? log .error( "Error info" ); ?????? log .fatal( "Fatal info" ); ??? } ??? public static void main(String[] args) { ?????? Test test = new Test(); ?????? test.log(); ??? } }
結(jié)果:
DEBUG? sample.Test.log(
Test.java:13 ) Debug info.
INFO?? sample.Test.log(
Test.java:14 ) Info info
WARN?? sample.Test.log(
Test.java:15 ) Warn info
ERROR? sample.Test.log(
Test.java:16 ) Error info
FATAL? sample.Test.log(
Test.java:17 ) Fatal info
當沒有任何配置文件(.properties)時,就如同上的結(jié)果。此時,它使用的是使用簡易日志包裝類(SimpleLog)。
下面加入包與配置文件,使其使用log4j。
1)?加入配置文件commons-logging.properties和log4j.properties。
2)?將 log4j.jar 和 common-logging.jar 兩個包加入到環(huán)境變量或者classpath 。
3)Test.java內(nèi)容不變。
3)?commons-logging.properties
org.apache.commons.logging.Log=org.apache.commons.logging.impl.Log4JCategoryLog
?
4)log4j.properties
log4j.rootLogger=info, stdout log4j.appender.stdout=org.apache.log4j.ConsoleAppender log4j.appender.stdout.layout=org.apache.log4j.PatternLayout # Pattern to output the caller's file name and line number. log4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n
結(jié)果:
INFO [main] - Info info
WARN [main] - Warn info
ERROR [main] - Error info
FATAL [main] - Fatal info
總結(jié)
以上是生活随笔 為你收集整理的Apache Commons-logging使用实例 的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔 網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔 推薦給好友。