java - 每次需要时都使用 Logger.getLogger() 或每个类(class)创建一次

标签 java java.util.logging

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

选项 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(...);
    }
}

最佳答案

有两个不太重要的原因可以解释为什么拥有一个静态(可能是最终的)实例比一直调用 getLogger 更好。

  1. 它使代码更易于阅读(在我看来)。
  2. 如果您一直调用 Logger.getLogger,您会付出非常的性能损失。除非您在紧密循环中调用它数百万次,否则无需担心,但它就在那里。

也就是说,个人偏好比这两个原因中的任何一个都重要得多。选项 1 是一种常见的方法,但如果您更喜欢选项 2,则一定要使用它。它不会损害您的代码。

关于java - 每次需要时都使用 Logger.getLogger() 或每个类(class)创建一次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6222365/

相关文章:

java - 如何使用 Java 代码从 AWS 获取 EC2 定价?

java - Android ClassNotFoundException

java - 从 XML 文档动态生成 Java 类

java - 用于强制一致性的接口(interface)上静态方法的替代方案

java - LOGGER.error(exception.getMessage()) 和 LOGGER.error(exception.getMessage(), exception) 有什么区别

java - 如何在JFrame中排列,升序,降序,冒泡,输入区域,输出区域

java - 在使用 java 日志记录 API 时,如何禁用默认控制台处理程序?

java - 使用多个参数记录

java - java中的日志轮转,日志限制

java - 如何将 java.util.logging 重定向到文件?