guangnian0412's BLOG

          Java in my life

          常用鏈接

          統計

          積分與排名

          我關注的Blog

          最新評論

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

          ?? (Jarkata 的 Commons Logging 包現在已經被用在幾乎所有的開源項目之中,它可以使你開發的系統工作在不同的日志框架下,包括Sun的logging框架和Apache Log4j。現在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接口的具體實現,這個實現與底層具體的日志框架相對應。例如,如果你的系統是使用Apache Log4j ,一個Log4JLogger將被返回,對應于Log4J category
          com.discursive.jccook.SomeApp 。

          討論:
          ??????? 一個可重用代碼庫的開發者不能預知其代碼庫將在何時何地被用到,而現在有很多的日志框架可以使用,所以當開發可重用代碼庫的時候,使用Commons Logging 是非常明智的,例如Jakarta Commons 組件。當調用LogFactory.getInstance()方法的時候,Commons Logging 將通過系統屬性和classpath中的類庫來決定和管理適當的日志框架。對于一個小型可重用組件的開發者來說,進行日志記錄只需要調用Log接口。而配置底層日志框架的負擔,就轉移到使用其組件庫的開發者身上。

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

          ????

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

          主站蜘蛛池模板: 凭祥市| 衡阳县| 西吉县| 甘德县| 岗巴县| 兴宁市| 交口县| 宝兴县| 嫩江县| 安康市| 洪洞县| 金川县| 巧家县| 沧源| 巴彦淖尔市| 石景山区| 瓦房店市| 荣成市| 江津市| 新宁县| 沅陵县| 澄迈县| 织金县| 河池市| 美姑县| 海丰县| 沙洋县| 徐闻县| 潜山县| 桓台县| 阳信县| 正定县| 永州市| 元氏县| 商城县| 汽车| 肇庆市| 子洲县| 巨鹿县| 新乡市| 墨玉县|