Java 为什么在tomcat logging.properties中需要两次写入处理程序?
发件人: 我没有找到任何解释为什么需要write处理程序和after.handlers?Java 为什么在tomcat logging.properties中需要两次写入处理程序?,java,tomcat,properties,logging,Java,Tomcat,Properties,Logging,发件人: 我没有找到任何解释为什么需要write处理程序和after.handlers? 类似属性文件是否有通用规则?第一行声明可以/将要使用的处理程序集,第二行将处理程序分配给特定的记录器(在本例中,根记录器为。处理程序没有任何前缀) 稍后在logging.properties中将配置每个处理程序。展开,这是我一开始不理解的 handlers=…行可以看作是一个“变量声明” “我声明了一个名为1catalina且类型为FileHandler的记录器,一个名为2localhost且类型为File
类似属性文件是否有通用规则?第一行声明可以/将要使用的处理程序集,第二行将处理程序分配给特定的记录器(在本例中,根记录器为
。处理程序没有任何前缀)
稍后在logging.properties中
将配置每个处理程序。展开,这是我一开始不理解的
handlers=…
行可以看作是一个“变量声明”
“我声明了一个名为1catalina
且类型为FileHandler
的记录器,一个名为2localhost
且类型为FileHandler
的记录器。一个类型为ConsoleHandler
的记录器(由于只有一个,所以没有命名最后一个,所以没有歧义)。”
另一方面,.handlers
行将是一个“赋值”
“我将1catalina&console处理程序分配给根记录器。这意味着在应用程序中完成的任何日志记录都将转发给这些处理程序(除非重写)”
.handlers
中的
指的是您正在对其应用的内容。在本例中,由于
左侧没有任何内容,因此将其应用于根记录器,所有记录器都从根记录器继承
但在这方面,这正是同样的原则:
com.mycompany.MyClass.handlers = java.util.logging.ConsoleHandler
在本例中,
左侧有一些内容用于.handlers
,这意味着我们不将这些处理程序分配给根记录器,而是分配给特定记录器。这一行表示“我正在覆盖此特定记录器的标准记录器->处理程序分配。在这种情况下,不要表现得像基于根记录器配置那样。在这种情况下,我希望您仅对该记录器使用ConsoleHandler
”
因此,这意味着MyClass
的任何日志记录都将只发送到ConsoleHandler
,而不会发送到任何其他处理程序。其他类不受此行的影响
再一次,我只是重复soulcheck的解释,但更详细,我需要自己去理解其中的区别
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
com.mycompany.MyClass.handlers = java.util.logging.ConsoleHandler