天天看點

jcl

1 commons-logging

  有兩個基本的抽象類:Log(基本記錄器)和LogFactory(負責建立Log示例)。當commons-logging.jar被加入到classpath之後,它會合理地猜測你想用的日志工具,讓後進行自我設定,使用者根本不需要做任何設定。

  預設的LogFactory是按照下列的步驟去發現并決定哪個日志工具将被使用的:

  1 尋找目前factory中名叫org.apache.commons.logging.Log配置屬性的值

  2 尋找系統中屬性中名叫 org.apache.commons.logging.Log的值

  3 如果應用程式的classpath中有log4j,則使用相關的包裝(wrapper)類(Log4JLogger)

  4 如果應用程式運作在jdk1.4的系統中,使用相關的包裝類(Jdk14Logger)

  5 使用建議日志包裝類(simpleLog)

2 目前常用的是Commoons-logging和Log4j結合使用。步驟如下(這隻是個概念上的流程)

2.1 部署日志器

  下載下傳commons-logging.jar和log4j.jar包,然後把他們放到工程lib目錄下,引入工程中。

2.2 指定日志器

  在屬性檔案common-logging.properties中設定實作接口的類。

  #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為輸出媒體

  org.apache.commons.logging.Log=org.apache.commons.logging.impl.Log4JCategoryLog

  #JDK5 Logger

  #org.apache.commons.logging.Log=org.apache.commons.logging.impl.Jdk14Logger

2.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);//類似于java的黃色感歎号,期望這類資訊能夠立即顯示在控制台

  log.warn(Object message, Throwable t);

  log.info(Object message);//運作時産生的有意義的時間。期望這類資訊能立即顯示在控制台上

  log.info(Object message, Throwable t);

  log.debug(Object message);//系統流程中的細節資訊。期望這類資訊僅寫入log檔案中

  log.debug(Object message, Throwable t);

  log.trace(Object message);//更加細節的資訊。期望這類資訊僅寫入log檔案中

  log.trace(Object message, Throwable t);

3 使用common-logging進行開發(這個是執行個體) 

  3.1 将common-logging.jar包加入到環境變量或者classpath.

  3.2 導入org.apache.commons.logging.Log;org.apache.commons.logging.LogFactory包

  3.3 代碼如下

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();
    }
}
           
jcl