温馨提示×

debian tomcat日志时间不对

小樊
40
2026-10-07 05:21:01
栏目: 智能运维

在 Debian 上运行 Tomcat 时,日志时间不对通常是下面几类原因导致的。我按最常见到最少见给你梳理,并给出对应解决办法。


一、系统时间本身就不对(最常见)

1. 检查系统时间

date
timedatectl

2. 如果时间不对,先同步时间

sudo apt install chrony -y
sudo systemctl enable --now chrony

或传统方式:

sudo apt install ntpdate
sudo ntpdate pool.ntp.org

✅ Tomcat 日志默认使用系统时间,系统时间错了,日志一定错。


二、时区不对(非常常见)

1. 查看当前时区

timedatectl

如果看到:

Time zone: UTC

但你在中国,就会“差 8 小时”。

2. 修改时区(以中国为例)

sudo timedatectl set-timezone Asia/Shanghai

或:

sudo ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

⚠️ 改完时区后,重启 Tomcat 才会生效


三、Tomcat / JVM 时区不对(系统对,但日志仍错)

Tomcat 使用 JVM 时区,不一定等于系统。

1. 查看 JVM 时区

在应用里或启动脚本加:

java -XshowSettings:properties -version

看:

user.timezone

2. 给 Tomcat 显式指定时区

方法一(推荐):修改 setenv.sh

sudo nano /opt/tomcat/bin/setenv.sh

加入:

export JAVA_OPTS="$JAVA_OPTS -Duser.timezone=Asia/Shanghai"

没有就新建该文件,并赋予执行权限:

chmod +x /opt/tomcat/bin/setenv.sh

方法二:修改 catalina.sh

(不推荐,维护性差)


四、Log4j / Logback 配置问题(应用日志时间错)

如果是你自己的应用日志时间不对,但 catalina.out 正确:

Log4j2 示例

<PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss.SSS}{Asia/Shanghai} %p %c{1.} - %m%n"/>

Logback 示例

<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS, Asia/Shanghai} %-5level %logger - %msg%n</pattern>

五、Docker 环境(如果你用容器)

容器默认是 UTC:

docker run -e TZ=Asia/Shanghai ...

或在 Dockerfile:

ENV TZ=Asia/Shanghai

六、快速排查 checklist ✅

  • [ ] date 时间对吗?
  • [ ] 时区是 Asia/Shanghai 吗?
  • [ ] Tomcat 重启了吗?
  • [ ] JVM 的 user.timezone 对吗?
  • [ ] 是 catalina.out 错,还是业务日志错?

如果你愿意,可以把下面信息发我,我可以直接帮你定位:

  1. Debian 版本
  2. Tomcat 版本
  3. 错误时间 vs 正确时间(差几小时)
  4. 是 catalina.out 还是应用日志

我可以直接给你精确修改命令。

0 踩