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

          主站蜘蛛池模板: 尼木县| 自贡市| 申扎县| 民县| 昌都县| 平江县| 通化市| 县级市| 左云县| 柞水县| 阳春市| 永仁县| 肥东县| 汝南县| 华阴市| 丹凤县| 阜平县| 肥乡县| 平罗县| 永登县| 河源市| 东海县| 文水县| 墨竹工卡县| 连平县| 饶河县| 保德县| 泸溪县| 顺义区| 永兴县| 卢龙县| 汝阳县| 阜宁县| 莱西市| 六盘水市| 承德市| 泰和县| 雷州市| 西充县| 江川县| 留坝县|