2009年4月11日 星期六

java.util.logging.Logger 的使用方式

關於 Java 核心與相關 API 的使用, 各位可以參考以下網址
http://java.sun.com/j2se/1.5.0/docs/

另外, 關於 Logger 的部分, 請參考以下
連結,
http://java.sun.com/j2se/1.5.0/docs/guide/logging/overview.html

Logger Sample01: 
public class SimpleLogger01 {
    public static void main(String[] args) {
        // 因為使用了Logger類,所以需要匯入java.util.logging.Logger
        Logger logger = Logger.getLogger(SimpleLogger01.class.getName());"
        // 因為使用了Level類,所以需要匯入java.util.logging.Level
        logger.log(Level.INFO, "this is a info");
    }
}

Logger Sample02: 
public class SimpleLogger02 {
    public static void main(String[] args) {
        Logger parentLog = Logger.getLogger(SimpleLogger02.class.getName());
        parentLog.log(Level.INFO, "this is a info");
        // 設定 parentLog 的 Level 為 WARNING,
        parentLog.setLevel(Level.WARNING);
        // 以 parentLog 為範本 建立新的 childLog, childLog 將會繼承  parentLog 所有特性
        Logger childLog = Logger.getLogger(SimpleLogger02.class.getName());
        // 因為繼承的關係, childLog 的 Level 為 WARNING, 所以INFO記錄不會被發布
        childLog.log(Level.INFO, "this is a child.info");
        childLog.log(Level.WARNING, "this is a child.warning");
    }
}

Logger Sample03: 
public class SimpleLogger03 {
    public static void main(String[] args) {
        Logger logger = Logger.getLogger(SimpleLogger03.class.getName());
        logger.log(Level.INFO, "this is a info");
        logger.setLevel(Level.WARNING);
        try {
            // 因為使用了FileHandler類, 所以需要匯入java.util.logging.FileHandler
            // %t = System.getProperty("java.io.tmpdir") 路徑
            FileHandler fileHandler = new FileHandler("%t/"+SimpleLogger03.class.getSimpleName()+".log");
            logger.addHandler(fileHandler);
            // 因為在<>\jre\lib\logging.properties 預設了ConsoleHandler, 一般情況下可在控制台看到日誌
            // 這裡用 FileHandler 替換 ConsoleHandler
        } catch (IOException e) {}
        
        // 請注意看輸出的日誌, 日誌檔案中看到的輸出格式為XML格式
        Logger childLog = Logger.getLogger(SimpleLogger03.class.getName());
        childLog.log(Level.INFO, "this is a child.info");
        childLog.log(Level.WARNING, "this is a child.warning");
    }
}