我试图找到关于它们之间差异的答案:
class MyClass {
private static Logger logger = LoggerFactory.getLogger(Logger.ROOT_LOGGER_NAME);
}
和
class MyClass {
private static Logger logger = LoggerFactory.getLogger(MyClass.class);
}
只有您计划进行精细的日志记录设置才有用吗?就像在不同文件中分离类的日志一样,为每个文件打印更多/更少的信息等等。
我有这个疑问,因为我使用LoggerFactory.getLogger(MyClass.class)
的大部分课程,但我认为LoggerFactory.getLogger(Logger.ROOT_LOGGER_NAME)
在大多数情况下都足够了。
谢谢!
答案 0 :(得分:2)
只有您计划进行精细的日志记录设置才有用吗?就像在不同文件中分离类的日志一样,为每个文件打印更多/更少的信息等等。
这是对的。通过将日志记录控制到类级别,通过为每个类提供自己的记录器,您可以更精细地控制日志记录。例如,我们通常会记录包中类的所有日志条目(无论级别如何),例如my.employer.com.team.project
。然后我们记录所有其他记录器的ERROR。然后,我们可以查看应用程序中使用的所有记录器,并可以远程启用/禁用我们想要的任何记录器。
我有这个疑问,因为我的大部分类都使用LoggerFactory.getLogger(MyClass.class),但我认为LoggerFactory.getLogger(Logger.ROOT_LOGGER_NAME)在大多数情况下都足够了。
如果您为所有类提供相同的记录器,那么它们将以相同的方式运行。我认为你是对的,在大多数情况下,你会对待你所有的课程。以相同的方式记录,但情况并非总是如此。此外,如果您正在编写库代码,那么您不能使用根记录器,因为现在您删除了您的库的用户调整库的能力'日志。