来自文档:
handlers = 1catalina.org.apache.juli.FileHandler, \
2localhost.org.apache.juli.FileHandler, \
3manager.org.apache.juli.FileHandler, \
java.util.logging.ConsoleHandler
.handlers = 1catalina.org.apache.juli.FileHandler, \
java.util.logging.ConsoleHandler
我没有找到任何解释为什么需要写
handlers
和之后.handlers
?
类似的属性文件有共同的规则吗?
第一行声明可以/将使用的处理程序集,第二行将处理程序分配给特定记录器(在本例中,根记录器为
.handlers
没有任何前缀)。
稍后在
logging.properties
中配置每个处理程序。
扩展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 和控制台处理程序分配给根记录器。这意味着应用程序中完成的任何日志记录都将转发到这些处理程序(除非被覆盖)”
.
中的.handlers
指的是您要应用的对象。在本例中,由于 .
左侧没有任何内容,因此您将其应用于所有记录器都继承自的根记录器。
但这与这一行的实际操作原理完全相同:
com.mycompany.MyClass.handlers = java.util.logging.ConsoleHandler
在这种情况下,
.
左侧有一些用于.handlers
的东西,这意味着我们不会将这些处理程序分配给根记录器,而是分配给特定的记录器。通过这一行,您可以说“我正在覆盖此特定记录器的标准记录器->处理程序分配。在这种情况下,不要像基于根记录器配置那样行事。在这种情况下,我希望您仅使用该记录器的 ConsoleHandler
”。
因此,这意味着
MyClass
的任何日志记录都只会发送到 ConsoleHandler
而不会发送到任何其他处理程序。其他类不受此行影响。
我只是重复灵魂检查的解释,但更详细,我需要自己理解其中的区别。