LoggerFactory.getLogger "root" 与 "class" 名称有何区别?
What the difference in LoggerFactory.getLogger "root" vs "class" name?
我正在尝试找到有关以下两者之间差异的答案:
class MyClass {
private static Logger logger = LoggerFactory.getLogger(Logger.ROOT_LOGGER_NAME);
}
和:
class MyClass {
private static Logger logger = LoggerFactory.getLogger(MyClass.class);
}
它是否只对您计划进行良好的日志记录设置有用?比如将 class 的日志分开放在不同的文件中,为每个文件打印 more/less 信息,等等
我有这个疑问,因为我的大多数 classes 我都使用 LoggerFactory.getLogger(MyClass.class)
,但我认为 LoggerFactory.getLogger(Logger.ROOT_LOGGER_NAME)
在大多数情况下就足够了。
谢谢!
Is it only useful with you are planning to do a fine logging setup? Like separate the log of the class in a different file, print more/less informations for each one, etc.
这是正确的。通过将日志记录控制到 class 级别,通过为每个 class 提供自己的记录器,您可以更精细地控制日志记录。例如,我们通常会在我们的包中记录 classes 的所有日志条目(无论级别如何),例如my.employer.com.team.project
。然后我们为所有其他记录器记录错误。然后我们能够查看应用程序上正在使用的所有记录器,并且可以远程 enable/disable 我们想要的任何实时记录器。
I have this doubt because most of my classes I use LoggerFactory.getLogger(MyClass.class) but I think the LoggerFactory.getLogger(Logger.ROOT_LOGGER_NAME) is enough in the most of the cases.
如果您为所有 class 提供相同的记录器,那么它们的行为都会相同。我认为您是对的,在大多数情况下,您将以相同的方式处理所有 classes 的日志记录,但情况并非总是如此。此外,如果您正在编写库代码,则不得使用根记录器,因为现在您删除了库用户调整库日志的能力。
我正在尝试找到有关以下两者之间差异的答案:
class MyClass {
private static Logger logger = LoggerFactory.getLogger(Logger.ROOT_LOGGER_NAME);
}
和:
class MyClass {
private static Logger logger = LoggerFactory.getLogger(MyClass.class);
}
它是否只对您计划进行良好的日志记录设置有用?比如将 class 的日志分开放在不同的文件中,为每个文件打印 more/less 信息,等等
我有这个疑问,因为我的大多数 classes 我都使用 LoggerFactory.getLogger(MyClass.class)
,但我认为 LoggerFactory.getLogger(Logger.ROOT_LOGGER_NAME)
在大多数情况下就足够了。
谢谢!
Is it only useful with you are planning to do a fine logging setup? Like separate the log of the class in a different file, print more/less informations for each one, etc.
这是正确的。通过将日志记录控制到 class 级别,通过为每个 class 提供自己的记录器,您可以更精细地控制日志记录。例如,我们通常会在我们的包中记录 classes 的所有日志条目(无论级别如何),例如my.employer.com.team.project
。然后我们为所有其他记录器记录错误。然后我们能够查看应用程序上正在使用的所有记录器,并且可以远程 enable/disable 我们想要的任何实时记录器。
I have this doubt because most of my classes I use LoggerFactory.getLogger(MyClass.class) but I think the LoggerFactory.getLogger(Logger.ROOT_LOGGER_NAME) is enough in the most of the cases.
如果您为所有 class 提供相同的记录器,那么它们的行为都会相同。我认为您是对的,在大多数情况下,您将以相同的方式处理所有 classes 的日志记录,但情况并非总是如此。此外,如果您正在编写库代码,则不得使用根记录器,因为现在您删除了库用户调整库日志的能力。