5/27/2014
2:16:00 PM 0

Apache Commons Logging 整合 java.util.logging

  1. 設定 commons logging 使用 java.util.logging

    在應用程式的 classpath 中加入 commons-logging.properties 檔案
    commons-logging.properties 內容如下,作用是要 commons.logging 使用 Jdk14Logger
    org.apache.commons.logging.Log=org.apache.commons.logging.impl.Jdk14Logger
    
    若不使用 commons-logging.properties, commons logging 會先搜尋 classpath 中是否存在 log4J , 若存在 log4J 則優先使用 log4J, 若不存 log4J 才會使用 java.util.logging, 順序可參考 org.apache.commons.logging.LogSource

  2. 建立 java.util.logging 設定檔

    建立設定檔 logging.properties, 檔名可自訂
    handlers= java.util.logging.FileHandler
    .level= INFO
    java.util.logging.FileHandler.pattern = test_%g.log
    java.util.logging.FileHandler.encoding = UTF-8
    java.util.logging.FileHandler.limit = 10000000
    java.util.logging.FileHandler.count = 10
    java.util.logging.FileHandler.append = true
    java.util.logging.SimpleFormatter.format = %1$tY-%1$tm-%1$td %1$tH:%1$tM:%1$tS %4$s %2$s %5$s%6$s%n
    java.util.logging.FileHandler.formatter=java.util.logging.SimpleFormatter
    
  3. 設定 java.util.logging 讀取設定檔
    方法一
    InputStream input = Thread.currentThread().getContextClassLoader().getResourceAsStream("logging.properties");
    
    try {
        LogManager.getLogManager().readConfiguration(input);
    } 
    catch (SecurityException | IOException e) {
        e.printStackTrace();
    }
    
    方法二
    設定 system property, 或在啟動程式時加入參數
    example: java -Djava.util.logging.config.file=logging.properties
    
    在不指定設定檔的狀況下, 預設會讀取 System.getProperty("java.home")/lib/logging.properties 檔案, 可參考 LogManager 文件
使用範例
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

public class TestLog {

    private static final Log log = LogFactory.getLog(TestLog.class);
 
    public static void main(String[] args) {
        log.debug("Debug Message");
        log.info("Info Message");
        log.warn("Warn Message");
        log.error("Error Message");
        log.fatal("Fatal Message");
     }
}
Log LEVEL 定義比較表

Java Logging Commons Logging
SEVERE FATAL
SEVERE ERROR
WARNING WARN
INFO INFO
CONFIG
FINE DEBUG
FINER
FINEST TRACE

0 comments:

Post a Comment