跨多个类使用java.util.logging

时间:2017-09-26 15:22:15

标签: java logging

我找到了在线here使用java.util.logging的这个例子。我不明白如何修改它以跨多个类使用样本
我是否只是在每节课中宣布这一点?

Logger logger = Logger.getLogger(Logger.GLOBAL_LOGGER_NAME);  

同样在类中,他们提供了语法错误:

// suppress the logging output to the console
Logger rootLogger = Logger.*getLogger*("");

到达根记录器的正确方法是什么?

package com.vogella.logger;

import java.io.IOException;
import java.util.logging.FileHandler;
import java.util.logging.Formatter;
import java.util.logging.Level;
import java.util.logging.Logger;
import java.util.logging.SimpleFormatter;

public class MyLogger {
    static private FileHandler fileTxt;
    static private SimpleFormatter formatterTxt;

    static private FileHandler fileHTML;
    static private Formatter formatterHTML;

    static public void setup() throws IOException {

        // get the global logger to configure it
        Logger logger = Logger.getLogger(Logger.GLOBAL_LOGGER_NAME);

        // suppress the logging output to the console
        Logger rootLogger = Logger.*getLogger*("");
        Handler[] handlers = rootLogger.getHandlers();
        if (handlers[0] instanceof ConsoleHandler) {
            rootLogger.removeHandler(handlers[0]);
        }

        logger.setLevel(Level.INFO);
        fileTxt = new FileHandler("Logging.txt");
        fileHTML = new FileHandler("Logging.html");

        // create a TXT formatter
        formatterTxt = new SimpleFormatter();
        fileTxt.setFormatter(formatterTxt);
        logger.addHandler(fileTxt);

        // create an HTML formatter
        formatterHTML = new MyHtmlFormatter();
        fileHTML.setFormatter(formatterHTML);
        logger.addHandler(fileHTML);
    }
}

1 个答案:

答案 0 :(得分:2)

即可。使用链接的Javadoc中所述的GLOBAL_LOGGER_NAME也可以使用每个类的全局记录器进行日志记录。虽然它的用处并不多,因为它是一个默认的java logger。

  

GLOBAL_LOGGER_NAME是全局记录器的名称。这个名字是   为随意使用的开发人员提供便利   记录包....

     

获取全局记录器对象的首选方法是通过调用Logger.getLogger(Logger.GLOBAL_LOGGER_NAME)

它也是旧版jdk的Logger.getGlobal()的替代版本。

要配置根记录器使用: -

Logger logger = Logger.getLogger("");