Tomcat 9.0.X catalina.out日志添加日期配置不生效如何解决
问题排查&解决方案
你遇到的配置不生效问题,是以下几个常见遗漏点导致的,按优先级排查即可:
1. 优先级最高:Guacamole应用自带日志配置覆盖Tomcat全局配置
Guacamole默认使用SLF4J+Logback作为日志实现,自身携带的日志配置优先级高于Tomcat全局的logging.properties,控制台输出的Guacamole业务日志不会走Tomcat的JULI格式配置。
处理方式:
- 在你配置的
guacamole.home=/local/guacamole目录下新建logback.xml文件,写入如下配置:
<configuration> <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> <encoder> <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern> </encoder> </appender> <root level="info"> <appender-ref ref="STDOUT" /> </root> </configuration>
- 重启Tomcat后,Guacamole输出的日志就会携带日期。
2. 遗漏AsyncFileHandler的格式配置
Tomcat默认输出到catalina.out的日志包含两部分:ConsoleHandler的输出、AsyncFileHandler的catalina日志输出,你只配置了ConsoleHandler的格式,还需要补充AsyncFileHandler的格式配置。
处理方式:
打开conf/logging.properties,找到1catalina.org.apache.juli.AsyncFileHandler相关配置,在formatter配置行后新增:
1catalina.org.apache.juli.AsyncFileHandler.formatter.timeFormat = yyyy-MM-dd HH:mm:ss,SSSZ
3. 全局Formatter参数配置不生效
Tomcat 9部分小版本对全局org.apache.juli.OneLineFormatter.timeFormat的配置支持有问题,需要改为给指定Handler的Formatter单独配置参数。
处理方式:
把你之前新增的全局配置行删除,改为在java.util.logging.ConsoleHandler配置块后新增:
java.util.logging.ConsoleHandler.formatter.timeFormat = yyyy-MM-dd HH:mm:ss,SSSZ
内容的提问来源于stack exchange,提问作者Jason K
相关产品推荐
相关产品推荐

