【问题标题】:java calling Logger class in other classesjava在其他类中调用Logger类
【发布时间】:2014-05-25 08:32:14
【问题描述】:

我用静态方法写了一个单独的类 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 setup”,我认为它应该是这样的“2014 年 5 月 25 日下午 2:05:30 javagui.CommonFrame " 因为我将该名称分配给了记录器。 我对吗?如果是,我该如何解决?

【问题讨论】:

    标签: java logging


    【解决方案1】:

    您已使用java.util.logging.SimpleFormatterformat 属性来使用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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-02-02
      • 1970-01-01
      • 2015-10-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多