LoggerFactory.getLogger中 "root" 和 "class" 名称有什么区别?

3

我正在尝试找到以下内容的区别:

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)已经足够了。

谢谢!

1个回答

2
只有当您计划进行良好的日志记录设置时,它才有用。例如,将类的日志记录分离到不同的文件中,为每个类打印更多/少量信息等。通过为每个类提供自己的记录器来控制日志记录级别,可以更精细地控制日志记录。例如,我们通常记录我们包中所有类的所有日志条目(无论级别如何),例如my.employer.com.team.project。然后,我们记录所有其他日志记录器的错误。我们随后能够查看应用程序上正在使用的所有记录器,并能够实时远程启用/禁用任何记录器。 如果您为所有类都使用相同的记录器,则它们将以相同的方式运行。大多数情况下,您可能确实会将所有类的日志记录视为相同,但并非总是如此。此外,如果您正在编写库代码,则不得使用根记录器,因为这样会删除库用户调整日志记录的能力。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接