Tomcat JULI logging.properties的说明

时间:2018-02-25 13:27:05

标签: java tomcat logging configuration

我通常使用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上进行记录,因为它的处理程序已设置。

欢迎任何帮助。

1 个答案:

答案 0 :(得分:2)

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 (xR, yR)不支持每个类名称的多个配置。通过添加前缀,它允许JULI使用LogManager中的不同配置创建相同类类型的多个实例。

回到您问题中的示例配置文件,logging.properties1catalina.只是前缀标识符,用于创建具有特定配置的2localhost.

  

我对" .handlers"感兴趣属性文件中的条目。你知道"。"性格呢?

对于Tomcat,解释如下:Why we need two times write handlers in tomcat logging.properties?