Tomcat 本身不直接记录日志时间,而是使用 JVM 的时区设置 或 日志框架(log4j / logback / java.util.logging)的配置。
所以“Tomcat 日志时间不对”,通常是时区问题。
下面按常见情况给你排查和解决方式:
在 bin/catalina.sh(Linux)或 bin/catalina.bat(Windows)中加 JVM 参数:
Linux:
JAVA_OPTS="$JAVA_OPTS -Duser.timezone=Asia/Shanghai"
Windows(catalina.bat):
set JAVA_OPTS=%JAVA_OPTS% -Duser.timezone=Asia/Shanghai
重启 Tomcat 即可。
date
timedatectl
如果不是中国时区:
timedatectl set-timezone Asia/Shanghai
<PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss.SSS}{Asia/Shanghai} [%t] %-5level %logger - %msg%n"/>
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS, Asia/Shanghai} %-5level %logger - %msg%n</pattern>
修改 conf/logging.properties:
java.util.logging.ConsoleHandler.formatter = org.apache.juli.OneLineFormatter
⚠️ 它不支持时区配置,只能通过 JVM 时区解决。
如果你用 Docker 跑 Tomcat:
ENV TZ=Asia/Shanghai
或启动参数:
-e TZ=Asia/Shanghai
如果你愿意,可以告诉我:
我可以直接给你精准修改方案。