温馨提示×

Debian Tomcat日志为何不更新

小樊
34
2026-07-27 17:58:06
栏目: 智能运维

Debian 上 Tomcat 日志不更新,通常不是 Tomcat 本身“坏了”,而是日志配置、权限或 systemd 行为导致的。下面按最常见原因 → 排查方法 → 解决办法给你一个系统性的排查清单。


一、最常见原因汇总(按概率)

1️⃣ 日志路径被 systemd 重定向(最常见)

在 Debian 使用 systemd 启动 Tomcat 时:

  • catalina.out 不会写入 /var/log/tomcat*/
  • 日志被重定向到 journald

✅ 验证:

journalctl -u tomcat9
# 或
journalctl -u tomcat10

✅ 如果你只盯着:

/var/log/tomcat9/catalina.out

那它可能一直不更新


2️⃣ 日志文件权限错误

Tomcat 进程用户(通常是 tomcat没有写权限

检查:

ls -ld /var/log/tomcat9
ls -l /var/log/tomcat9/

修复:

sudo chown -R tomcat:tomcat /var/log/tomcat9
sudo chmod 750 /var/log/tomcat9

3️⃣ logging.properties 被修改或缺失

Tomcat 使用 logging.properties 控制日志。

检查:

/etc/tomcat9/logging.properties
# 或
/var/lib/tomcat9/conf/logging.properties

重点看:

1catalina.org.apache.juli.AsyncFileHandler.directory = ${catalina.base}/logs
1catalina.org.apache.juli.AsyncFileHandler.prefix = catalina.

如果这个目录不存在或不可写,日志不会生成。


4️⃣ 日志轮转(logrotate)后未重新打开文件

如果日志被 logrotate 切割,但 Tomcat 未重新打开文件句柄

  • 文件存在
  • 但内容不再更新

✅ 解决方式之一:

sudo systemctl restart tomcat9

或配置 logrotate 使用 copytruncate

/var/log/tomcat9/catalina.out {
    daily
    rotate 7
    copytruncate
    missingok
}

5️⃣ 应用日志被 Log4j / Logback 接管

如果你部署的应用使用:

  • Log4j
  • Logback

那么:

  • catalina.out 不会记录应用日志
  • 应用日志写在你自己的 log 配置路径中

✅ 检查应用配置:

WEB-INF/classes/logback.xml
log4j.properties

6️⃣ Tomcat 根本没在运行

确认状态:

systemctl status tomcat9

或:

ps aux | grep tomcat

二、Debian 上 Tomcat 日志的“真实位置”

日志类型 实际位置
systemd 启动日志 journalctl -u tomcat9
catalina 日志 /var/log/tomcat9/catalina.*.log
localhost 日志 /var/log/tomcat9/localhost.*.log
应用日志 取决于 log4j / logback
catalina.out 可能不存在或为空

三、快速排查步骤(推荐顺序)

# 1. 看 systemd 日志
journalctl -u tomcat9 -f

# 2. 看 Tomcat 是否真的在写日志
ls -lt /var/log/tomcat9

# 3. 看权限
namei -l /var/log/tomcat9/catalina.out

# 4. 重启验证
systemctl restart tomcat9

四、如果你想要“传统 catalina.out”

编辑 systemd service:

sudo systemctl edit tomcat9

添加:

[Service]
StandardOutput=append:/var/log/tomcat9/catalina.out
StandardError=append:/var/log/tomcat9/catalina.out

然后:

systemctl daemon-reload
systemctl restart tomcat9

五、我可以进一步帮你

你可以直接贴出:

  1. Debian 版本
  2. Tomcat 版本
  3. systemctl status tomcat9
  4. ls -l /var/log/tomcat9

我可以精确告诉你是哪一条原因,而不是泛泛排查。

0