java在其他类中调用Logger类

时间:2014-05-25 08:32:15

标签: java logging

我用静态方法

编写了一个单独的MyLogger类
static public void setup(String className, Exception e, Level level) {

    System.out.println("className = " + className);
    Logger logger = Logger.getLogger(className);
    logger.setLevel(Level.INFO);



    try {
        fileTxt = new FileHandler("Logging.%u.%g.txt",1024 * 1024, 10, true );
        // create a TXT formatter
        formatterTxt = new SimpleFormatter();
        fileTxt.setFormatter(formatterTxt);

        logger.addHandler(fileTxt);
        logger.log(level, e.toString(), e);
    } catch (IOException | SecurityException ex) {
        System.out.println("SecurityException ");
        Logger logger2=Logger.getLogger(MyLogger.class.getName());
        logger2.addHandler(new ConsoleHandler());
        logger2.log(Level.SEVERE, null, ex);
    }

}

此静态方法接收一个字符串className,我将其作为参数放入Logger.getLogger()。

在另一个类中,我调用MyLogger.setup(CommonFrame.class.getName(),e,Level.SEVERE)。 一切正常。但问题是在文件中我得到“2014年5月25日下午2:05:30 javagui.MyLogger设置”,我认为它应该是这样的“2014年5月25日下午2:05:30 javagui.CommonFrame “因为我将这个名字分配给了记录器。 我对吗?如果是,我该如何解决?

1 个答案:

答案 0 :(得分:0)

您已使用formatjava.util.logging.SimpleFormatter属性来使用logger name而不是source classname

修改启动脚本以设置以下系统属性:

-Djava.util.logging.SimpleFormatter.format="%1$tc %3$s%n%4$s: %5$s%6$s%n"

或者修改您的logging.properties以包括:

java.util.logging.SimpleFormatter.format=%1$tc %3$s%n%4$s: %5$s%6$s%n

否则,您可以创建自定义formatter并使用它提取您希望在日志文件中看到的information