Java 海关伐木的动机

Motivation for Java Logging Customs

我一直在阅读有关登录的内容 Java,SLF4J 似乎是正确的选择。

我不明白为什么日志记录对象是 obtained/initialized 的样子。

为什么

private static final Logger logger = LoggerFactory.getLogger(App.class);

需要每个 class?

  1. 为什么不为所有 classes/class-instances 使用一些静态记录器实例呢? (如果我不为每个 class 创建新实例会怎样?)

  2. 为什么我需要将 class 正在使用记录器的 class 对象传递给工厂?无论如何,记录器在运行时不会拥有所有这些详细信息吗? (如果我传递一些不同的 class 对象会怎样?)

  1. 您实际上可以创建一个可以在任何地方使用的单例记录器。但是我们通常会为每个 class 创建一个记录器,只是为了过滤日志。
  2. 这只是为了命名您创建的记录器实例,实际上您可以传递任何您想要的字符串并且不会发生任何事情 前任: Logger logger = LoggerFactory.getLogger("any name");