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