Debian 上 Tomcat 日志不更新,通常不是 Tomcat 本身“坏了”,而是日志配置、权限或 systemd 行为导致的。下面按最常见原因 → 排查方法 → 解决办法给你一个系统性的排查清单。
在 Debian 使用 systemd 启动 Tomcat 时:
catalina.out 不会写入 /var/log/tomcat*/✅ 验证:
journalctl -u tomcat9
# 或
journalctl -u tomcat10
✅ 如果你只盯着:
/var/log/tomcat9/catalina.out
那它可能一直不更新
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
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.
如果这个目录不存在或不可写,日志不会生成。
如果日志被 logrotate 切割,但 Tomcat 未重新打开文件句柄:
✅ 解决方式之一:
sudo systemctl restart tomcat9
或配置 logrotate 使用 copytruncate:
/var/log/tomcat9/catalina.out {
daily
rotate 7
copytruncate
missingok
}
如果你部署的应用使用:
那么:
catalina.out 不会记录应用日志✅ 检查应用配置:
WEB-INF/classes/logback.xml
log4j.properties
确认状态:
systemctl status tomcat9
或:
ps aux | grep 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
编辑 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
你可以直接贴出:
systemctl status tomcat9ls -l /var/log/tomcat9我可以精确告诉你是哪一条原因,而不是泛泛排查。