Tomcat 在 Ubuntu 上日志时间不对,90% 是时区问题,不是 Tomcat 本身的 bug。下面按常见情况一步步来:
date
如果系统时间就不对:
sudo timedatectl set-timezone Asia/Shanghai
sudo apt install -y ntpdate
sudo ntpdate pool.ntp.org
再 date 看是否正确。
timedatectl
确保是:
Time zone: Asia/Shanghai (CST, +0800)
Tomcat 默认用 JVM 时区,不一定是系统时区。
在 catalina.out 或日志里看到时间差 8 小时,基本就是 JVM 时区不对。
编辑:
sudo vim /opt/tomcat/bin/setenv.sh
(没有就新建)
加入:
export JAVA_OPTS="$JAVA_OPTS -Duser.timezone=Asia/Shanghai"
保存后重启 Tomcat:
sudo systemctl restart tomcat
或
./shutdown.sh
./startup.sh
如果你是 log4j2 / logback,还要看配置:
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS, Asia/Shanghai}</pattern>
<PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss.SSS}{Asia/Shanghai}"/>
Docker 容器默认 UTC:
docker run -e TZ=Asia/Shanghai ...
或在 Dockerfile:
ENV TZ=Asia/Shanghai
date 正确timedatectl 时区正确-Duser.timezone如果你愿意,可以把:
发给我,我可以直接给你精确改法。