每次我需要时使用Logger.getLogger()或每个类创建一次

时间:2011-06-03 02:18:57

标签: java java.util.logging

我正在使用Java util Logger。根据Logger.getLogger方法的文档,它说:“为命名的子系统查找或创建一个记录器。如果已经使用给定名称创建了一个记录器,则返回该记录器。否则将创建一个新的记录器。”每节课只召唤一次会有什么好处吗?

选项1:

public class Myclass 
    static Logger logger = Logger.getLogger(Myclass.class);

    public void method1() {
        logger.log(...);
    }

    public void method2() {
        logger.log(....);
    }
}

选项2:

public class Myclass {
    public void method1() {
        Logger.getLogger(Myclass.class).log(...);
    }

    public void method2() {
        Logger.getLogger(Myclass.class).log(...);
    }
}

2 个答案:

答案 0 :(得分:6)

有两个非常重要的原因可能导致单个静态(可能是最终的)实例比始终调用getLogger更好。

  1. 它使代码更容易阅读(在我看来)。
  2. 如果您始终致电Logger.getLogger,则需要支付非常小的性能损失。除非你在一个紧凑的循环中调用数百万次,否则不必担心,但它就在那里。
  3. 尽管如此,个人偏好比这些原因要重要得多。选项1是一种常见的方法,但如果您更喜欢选项2,那么一定要使用它。这不会伤害你的代码。

答案 1 :(得分:0)

他们只受益我看到更短的日志行使代码看起来更清晰。但是 - 实际上在运行时没有区别