我通常使用Log4J。我试图了解如何在Tomcat服务器中配置JULI。我已经提供了对这些以“ *”开头的含义的理解。请您能确保我的理解是正确的。
*THE SET OF ALL HANDLERS HAVE TO BE DECLARED AS VALUES OF handlers
handlers = 1catalina.org.apache.juli.FileHandler,2localhost.org.apache.juli.FileHandler, java.util.logging.ConsoleHandler
*THIS IS THE SET OF HANDLERS ALL LOGGERS WILL HAVE THESE HANDLERS like rootLogger IN LOG4J. YOU DO NOT HAVE DECLARE THEM FOR ANY LOGGERS.
.handlers = 1catalina.org.apache.juli.FileHandler, java.util.logging.ConsoleHandler
*THIS IS THE CONFIGURATION FOR ALL THE HANDLERS
############################################################
# Handler specific properties.
# Describes specific configuration info for Handlers.
############################################################
1catalina.org.apache.juli.FileHandler.level = FINE
1catalina.org.apache.juli.FileHandler.directory = ${catalina.base}/logs
1catalina.org.apache.juli.FileHandler.prefix = catalina.
2localhost.org.apache.juli.FileHandler.level = FINE
2localhost.org.apache.juli.FileHandler.directory = ${catalina.base}/logs
2localhost.org.apache.juli.FileHandler.prefix = localhost.
java.util.logging.ConsoleHandler.level = FINE
java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter
############################################################
# Facility specific properties.
# Provides extra control for each logger.
############################################################
*[localhost].handlers IS THE SPECIFIC HANDLER FOR LOCALHOST
org.apache.catalina.core.ContainerBase.[Catalina].[localhost].level = INFO
org.apache.catalina.core.ContainerBase.[Catalina].[localhost].handlers = 2localhost.org.apache.juli.FileHandler
# For example, set the com.xyz.foo logger to only log SEVERE
# messages:
#org.apache.catalina.startup.ContextConfig.level = FINE
#org.apache.catalina.startup.HostConfig.level = FINE
#org.apache.catalina.session.ManagerBase.level = FINE
#org.apache.catalina.core.AprLifecycleListener.level=FINE
我对这一行感到困惑:
.handlers = 1catalina.org.apache.juli.FileHandler,java.util.logging.ConsoleHandler
即使每个记录器都声明了自己的记录器,是否也会得到这两个记录器?因此,当消息记录到2localhost.org.apache.juli.FileHandler时,它也记录到1catalina.org.apache.juli.FileHandler和java.util.logging.ConsoleHandler。
或者,如果设置了记录程序的处理程序,则由于设置了其处理程序,因此不会在1catalina.org.apache.juli.FileHandler,java.util.logging.ConsoleHandler上进行记录。
欢迎任何帮助。
最佳答案
Logging in Tomcat文档将回答您的问题。
我对这一行感到困惑:.handlers = 1catalina.org.apache.juli.FileHandler,java.util.logging.ConsoleHandler
即使每个记录器都声明了自己的记录器,是否也会得到这两个记录器?因此,当消息记录到2localhost.org.apache.juli.FileHandler时,它也记录到1catalina.org.apache.juli.FileHandler和java.util.logging.ConsoleHandler。
根据上面的文档页面:
可以在处理程序名称中添加前缀,以便可以实例化单个类的多个处理程序。前缀是一个字符串,以数字开头,以“。”结尾。例如22foobar。是有效的前缀。
标准的JUL LogManager
不支持单个类名的多个配置。通过添加前缀,它使JULI可以使用logging.properties
创建具有不同配置的相同类类型的多个实例。
因此,回到问题中的示例配置文件,1catalina.
和2localhost.
只是用于创建具有特定配置的org.apache.juli.FileHandler
的前缀标识符。
我对属性文件中的“ .handlers”条目感兴趣。你知道什么。性格呢?
对于Tomcat,这在以下内容中进行了解释:Why we need two times write handlers in tomcat logging.properties?