温馨提示×

ubuntu tomcat日志时间不对为何

小樊
34
2026-09-21 19:37:04
栏目: 智能运维

在 Ubuntu 上 Tomcat 日志时间不对,通常不是 Tomcat 本身的 bug,而是时区(TimeZone)问题。下面按常见原因和解决办法说明。


一、最常见原因:Tomcat 使用的时区不对

Tomcat(Java)默认使用 JVM 的时区,而不是系统时间显示。

1. 查看系统时间是否正确

date
timedatectl

如果系统时间是对的,但 Tomcat 日志时间差 8 小时(常见于中国),说明 Tomcat 用了 UTC。


二、解决办法(推荐)

✅ 方法 1:在 Tomcat 启动参数中指定时区(最常用)

编辑 Tomcat 的启动环境文件:

# 方式一(systemd 管理)
sudo systemctl edit tomcat

# 方式二(catalina.sh)
vi $CATALINA_HOME/bin/setenv.sh

添加:

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

保存后重启:

sudo systemctl restart tomcat

✅ 方法 2:修改 Ubuntu 系统时区(推荐一起做)

sudo timedatectl set-timezone Asia/Shanghai

确认:

date

⚠️ 注意:
仅改系统时间,Tomcat 不一定生效,Java 可能仍用 UTC。


✅ 方法 3:修改 JVM 全局时区(不推荐)

sudo update-alternatives --config java

或在 /etc/environment 加:

TZ=Asia/Shanghai

三、日志时间仍然不对?检查这些

1. 日志框架时区(log4j / logback)

如果你用的是 log4j2 / logback,也可能单独设置时区。

logback 示例

<pattern>%d{yyyy-MM-dd HH:mm:ss,Asia/Shanghai}</pattern>

log4j2 示例

<PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss}{Asia/Shanghai}"/>

2. Docker 中的 Tomcat

Docker 容器默认是 UTC。

解决:

-e TZ=Asia/Shanghai

ENV TZ=Asia/Shanghai

3. 日志时间“慢 8 小时”

✅ 几乎 100% 是 UTC vs CST(中国标准时间)


四、快速自检命令

# 查看 JVM 时区
java -XshowSettings:properties -version 2>&1 | grep timezone

总结一句话

Tomcat 日志时间不对,99% 是 JVM 时区不是你所在时区,用 -Duser.timezone 解决最直接。

如果你愿意,可以告诉我:

  • Ubuntu 版本
  • Tomcat 版本
  • 是否用 Docker
  • 日志差几个小时

我可以给你精确的一行配置

0