我试图找到有关以下两者之间差异的答案:

class MyClass {
    private static Logger logger = LoggerFactory.getLogger(Logger.ROOT_LOGGER_NAME);
}

和:
class MyClass {
    private static Logger logger = LoggerFactory.getLogger(MyClass.class);
}

它仅对计划进行精细记录设置的用户有用吗?就像将类的日志分开存储在不同的文件中一样,为每个文件打印更多/更少的信息,等等。

我对此有疑问,因为我的大多数 class 都使用LoggerFactory.getLogger(MyClass.class),但我认为在大多数情况下LoggerFactory.getLogger(Logger.ROOT_LOGGER_NAME)就足够了。

谢谢!

最佳答案

它仅对计划进行精细记录设置的用户有用吗?就像将类的日志分开存储在不同的文件中一样,为每个文件打印更多/更少的信息,等等。

这是对的。通过将日志记录控制到类级别,通过为每个类提供自己的记录器,您可以更好地控制日志记录。例如,我们通常会记录包中类的所有日志条目(无论级别如何),例如my.employer.com.team.project。然后,我们为所有其他记录器记录ERROR。然后,我们可以查看应用程序上正在使用的所有记录器,并且可以实时远程启用/禁用我们想要的任何记录器。

我对此有疑问,因为我的大多数类都使用LoggerFactory.getLogger(MyClass.class),但我认为在大多数情况下,LoggerFactory.getLogger(Logger.ROOT_LOGGER_NAME)就足够了。

如果为所有类提供相同的记录器,则它们的行为都将相同。我认为您是对的,在大多数情况下,您将以相同的方式对待所有类的日志记录,但这并非总是如此。另外,如果您正在编写库代码,则一定不要使用root记录器,因为现在您删除了库用户对库日志进行调整的功能。

10-08 09:08