为了扩展soulcheck的答案,我一开始并不理解......
该行可以看作是一个“变量声明”。handlers = ...
handlers = 1catalina.org.apache.juli.FileHandler, \
2localhost.org.apache.juli.FileHandler, \
3manager.org.apache.juli.FileHandler, \
java.util.logging.ConsoleHandler
“我声明一个名称和类型的记录器,一个名称和类型的记录器。一个类型的记录器(没有命名最后一个,因为只有一个,所以没有歧义)。1catalina
FileHandler
2localhost
FileHandler
ConsoleHandler
另一方面,这条线将是一个“任务”。.handlers
.handlers = 1catalina.org.apache.juli.FileHandler,
java.util.logging.ConsoleHandler
“我将 1catalina 和控制台处理程序分配给根记录器。这意味着在应用程序中完成的任何日志记录都将转发给这些处理程序(除非被覆盖)”
in指的是你正在应用它的东西。在本例中,由于 左侧没有任何内容,因此您将它应用于根记录器,所有记录器都从中继承。.
.handlers
.
但这与这条线中完全相同的原则:
com.mycompany.MyClass.handlers = java.util.logging.ConsoleHandler
在这种情况下,for 的左侧有一些东西,这意味着我们不会将这些处理程序分配给根记录器,而是分配给特定的记录器。对于此行,您说“我正在覆盖此特定记录器的标准记录器>处理程序分配。在这种情况下,不要像基于根记录器配置那样操作。在这种情况下,我希望您仅使用 该记录器”。.
.handlers
ConsoleHandler
因此,这意味着 的任何日志记录将仅发送到,而不是发送到任何其他处理程序。其他类不受此行的影响。MyClass
ConsoleHandler
再一次,我只是重复灵魂检查的解释,但更详细地说,我需要自己去理解其中的区别。