Tomcat 本身不直接记录业务日志时间,日志时间通常由 JVM 时区 或 日志框架配置 决定。下面按常见情况给你排查和调整方法。
Tomcat 使用的日志(如 catalina.out、访问日志)时间来自 JVM 默认时区。
date
java -XshowSettings:properties -version 2>&1 | grep user.timezone
如果时区不是你所在的(如 Asia/Shanghai),就需要调整。
编辑 bin/catalina.sh,在文件开头加:
JAVA_OPTS="$JAVA_OPTS -Duser.timezone=Asia/Shanghai"
或:
CATALINA_OPTS="-Duser.timezone=Asia/Shanghai"
重启 Tomcat:
./shutdown.sh
./startup.sh
编辑 bin/catalina.bat:
set JAVA_OPTS=%JAVA_OPTS% -Duser.timezone=Asia/Shanghai
访问日志由 server.xml 控制。
conf/server.xml
<Valve className="org.apache.catalina.valves.AccessLogValve"
directory="logs"
prefix="localhost_access_log"
suffix=".txt"
pattern="%h %l %u %t "%r" %s %b"
timezone="Asia/Shanghai" />
⚠️ 老版本 Tomcat 不支持 timezone 属性,需靠 JVM 时区解决。
<PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss.SSS}{Asia/Shanghai} %p %c - %m%n"/>
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS, Asia/Shanghai} %-5level %logger - %msg%n</pattern>
date
timedatectl
同步时间:
ntpdate cn.pool.ntp.org
# 或
timedatectl set-timezone Asia/Shanghai
如果你愿意,可以告诉我:
我可以直接给你一份可复制的配置。