Java LoggerFactory.getLogger“中的区别是什么;根“;vs";“类”;名称
我正试图找到以下两者之间差异的答案:Java LoggerFactory.getLogger“中的区别是什么;根“;vs";“类”;名称,java,slf4j,Java,Slf4j,我正试图找到以下两者之间差异的答案: class MyClass { private static Logger logger = LoggerFactory.getLogger(Logger.ROOT_LOGGER_NAME); } 以及: 它是否只对计划进行精细日志设置的用户有用?像在不同的文件中分开类的日志一样,为每个类打印更多/更少的信息,等等 我有这个疑问,因为我使用的大多数类都是LoggerFactory.getLogger(MyClass.class),但我认为Logge
class MyClass {
private static Logger logger = LoggerFactory.getLogger(Logger.ROOT_LOGGER_NAME);
}
以及:
它是否只对计划进行精细日志设置的用户有用?像在不同的文件中分开类的日志一样,为每个类打印更多/更少的信息,等等
我有这个疑问,因为我使用的大多数类都是LoggerFactory.getLogger(MyClass.class)
,但我认为LoggerFactory.getLogger(Logger.ROOT\u Logger\u NAME)
在大多数情况下已经足够了
谢谢
它是否只对计划进行精细日志设置的用户有用?像在不同的文件中分开类的日志一样,为每个类打印更多/更少的信息,等等
这是正确的。通过将日志记录控制到类级别,并为每个类提供自己的记录器,您可以更精细地控制日志记录。例如,我们通常记录包中类的所有日志条目(无论级别),例如my.employer.com.team.project
。然后,我们为所有其他记录器记录错误。然后,我们可以查看应用程序上正在使用的所有记录器,并可以远程实时启用/禁用我们想要的任何记录器
我有这个疑问,因为我的大多数类都使用LoggerFactory.getLogger(MyClass.class),但我认为LoggerFactory.getLogger(Logger.ROOT\u Logger\u NAME)在大多数情况下已经足够了
如果给所有类提供相同的记录器,那么它们的行为方式都是相同的。我认为您是对的,在大多数情况下,您将以相同的方式对待所有类的日志记录,但情况并非总是如此。此外,如果您正在编写库代码,则不能使用根日志记录器,因为现在您删除了库用户的日志调优功能
class MyClass {
private static Logger logger = LoggerFactory.getLogger(MyClass.class);
}