guangnian0412's BLOG

          Java in my life

          常用鏈接

          統(tǒng)計

          積分與排名

          我關(guān)注的Blog

          最新評論

          [Commons Logging]使用一個抽象的Logging接口(From Jarkata Commons Cookbook 7.10)

          ?? (Jarkata 的 Commons Logging 包現(xiàn)在已經(jīng)被用在幾乎所有的開源項目之中,它可以使你開發(fā)的系統(tǒng)工作在不同的日志框架下,包括Sun的logging框架和Apache Log4j。現(xiàn)在Commons Logging + Apache Log4j 的身影是隨處可見,Commons Logging 的易用與Log4j的強大功能形成了絕配。)

          問題:
          ??? ? 你正在寫一個可重用的代碼庫,而你不知道你的代碼在哪里并且是如何工作的。你需要一個抽象的日志接口來寫入日志信息,因為你不能確定Log4j或者是JDK 1.4 logging的存在性。

          解決:
          ??????? 通過Jakarta Commons Logging 的Log 接口來記錄信息,然后依靠Commons Logging自身來決定在運行時使用哪種具體的日志框架。下面的代碼使用了Log接口來記錄trace,debug,info,warning,error和fatal信息:
          ?1?import?org.apache.commons.logging.LogFactory;
          ?2?import?org.apache.commons.logging.Log
          ?3?
          ?4?Log?log?=?LogFactory.getLog(?"com.discursive.jccook.SomeApp"?);?
          ?5?
          ?6?if(?log.isTraceEnabled(?)?)?{
          ?7?????log.trace(?"This?is?a?trace?message"?);
          ?8?}
          ?9?
          10?if(?log.isDebugEnabled(?)?)?{
          11?????log.debug(?"This?is?a?debug?message"?);
          12?}
          13?
          14?log.info(?"This?is?an?informational?message"?);
          15?
          16?log.warn(?"This?is?a?warning"?);
          17?
          18?log.error(?"This?is?an?error"?);
          19?
          20?log.fatal(?"This?is?fatal"?);
          ????? LogFactory.getInstance() 返回一個Log接口的具體實現(xiàn),這個實現(xiàn)與底層具體的日志框架相對應(yīng)。例如,如果你的系統(tǒng)是使用Apache Log4j ,一個Log4JLogger將被返回,對應(yīng)于Log4J category
          com.discursive.jccook.SomeApp 。

          討論:
          ??????? 一個可重用代碼庫的開發(fā)者不能預(yù)知其代碼庫將在何時何地被用到,而現(xiàn)在有很多的日志框架可以使用,所以當開發(fā)可重用代碼庫的時候,使用Commons Logging 是非常明智的,例如Jakarta Commons 組件。當調(diào)用LogFactory.getInstance()方法的時候,Commons Logging 將通過系統(tǒng)屬性和classpath中的類庫來決定和管理適當?shù)娜罩究蚣堋τ谝粋€小型可重用組件的開發(fā)者來說,進行日志記錄只需要調(diào)用Log接口。而配置底層日志框架的負擔,就轉(zhuǎn)移到使用其組件庫的開發(fā)者身上。

          參考:
          ??????? 7.11節(jié)詳細的說明了Commons Logging在運行時確定適當日志框架的算法。

          ????

          posted on 2006-04-24 18:32 guangnian 閱讀(826) 評論(0)  編輯  收藏 所屬分類: Jakarta Commons

          主站蜘蛛池模板: 北辰区| 德格县| 扎兰屯市| 威海市| 东港市| 五华县| 天峨县| 鄂托克前旗| 精河县| 昌平区| 长兴县| 北安市| 肥东县| 寻乌县| 旌德县| 镇江市| 新疆| 怀化市| 南城县| 花莲县| 金堂县| 宁陵县| 西青区| 建水县| 依安县| 南涧| 文成县| 安溪县| 洪雅县| 黄骅市| 汤原县| 灌阳县| 西安市| 邯郸县| 调兵山市| 济源市| 潢川县| 来安县| 衡阳县| 当雄县| 益阳市|