温馨提示×

tomcat日志时间不对怎调整

小樊
46
2026-10-18 06:55:01
栏目: 智能运维

Tomcat 本身不直接记录业务日志时间,日志时间通常由 JVM 时区 或 日志框架配置 决定。下面按常见情况给你排查和调整方法。


一、最常见原因:JVM 时区不对(推荐先查这个)

Tomcat 使用的日志(如 catalina.out、访问日志)时间来自 JVM 默认时区。

1️⃣ 查看当前时区

date
java -XshowSettings:properties -version 2>&1 | grep user.timezone

如果时区不是你所在的(如 Asia/Shanghai),就需要调整。


2️⃣ 修改 Tomcat 时区(推荐)

Linux(最常用)

编辑 bin/catalina.sh,在文件开头加:

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

或:

CATALINA_OPTS="-Duser.timezone=Asia/Shanghai"

重启 Tomcat:

./shutdown.sh
./startup.sh

Windows

编辑 bin/catalina.bat:

set JAVA_OPTS=%JAVA_OPTS% -Duser.timezone=Asia/Shanghai

二、Tomcat 访问日志(access log)时间不对

访问日志由 server.xml 控制。

1️⃣ 配置文件位置

conf/server.xml

2️⃣ 修改 AccessLogValve

<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 时区解决。


三、业务日志时间不对(log4j / logback)

log4j2 示例

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

logback 示例

<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

五、快速排查顺序(建议)

  1. ✅ 系统时间对不对
  2. ✅ JVM 时区对不对(最重要)
  3. ✅ server.xml 访问日志时区
  4. ✅ 日志框架时区配置

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

  • 操作系统(Linux / Windows)
  • Tomcat 版本
  • 是 catalina.out、access log 还是 业务日志 时间不对

我可以直接给你一份可复制的配置。

0 踩