Debian 上 Tomcat 日志丢失通常不是“被删了”,而是路径、权限、配置或系统机制导致没生成/被轮转走。下面按最常见原因逐条说明,并给出排查方法。
Debian 下 Tomcat 多以 tomcat 用户运行(如 tomcat9、tomcat10)。
问题表现
catalina.out 不存在logs/ 目录为空原因
logs/ 属主不是 tomcat 用户检查
ls -ld /var/lib/tomcat9/logs
ls -l /var/lib/tomcat9/logs
修复
chown -R tomcat9:tomcat9 /var/lib/tomcat9/logs
chmod 750 /var/lib/tomcat9/logs
Debian 的 Tomcat 是分包结构,和官方 tar.gz 不一样。
| 类型 | 路径 |
|---|---|
| Debian 包 | /var/lib/tomcat9/logs |
| 官方包 | apache-tomcat/bin/../logs |
| systemd | journalctl -u tomcat9 |
很多人只看
/opt/tomcat/logs # 空的
正确做法
ls /var/lib/tomcat9/logs
journalctl -u tomcat9
Debian + systemd 下:
catalina.out 可能根本不写验证
journalctl -u tomcat9 --since "1 hour ago"
如果你想恢复 catalina.out:
systemctl edit tomcat9
加入:
[Service]
StandardOutput=append:/var/lib/tomcat9/logs/catalina.out
StandardError=append:/var/lib/tomcat9/logs/catalina.out
文件位置:
/etc/tomcat9/logging.properties
常见错误:
1catalina.org.apache.juli.FileHandler最小可用配置
handlers = 1catalina.org.apache.juli.FileHandler
1catalina.org.apache.juli.FileHandler.directory = ${catalina.base}/logs
1catalina.org.apache.juli.FileHandler.prefix = catalina.
Debian 默认有:
/etc/logrotate.d/tomcat9
问题:
copytruncate 没开,导致文件被改名但 tomcat 仍写旧 fd检查
ls -l /var/lib/tomcat9/logs
cat /etc/logrotate.d/tomcat9
推荐配置
/var/lib/tomcat9/logs/catalina.out {
daily
rotate 7
copytruncate
missingok
}
df -h
df -i
Tomcat 不会报错,只是静默不写。
日志丢失其实是:启动就崩
看:
systemctl status tomcat9
journalctl -xe
systemctl status tomcat9
journalctl -u tomcat9 -n 50
ls -l /var/lib/tomcat9/logs
df -h
cat /etc/tomcat9/logging.properties
如果你愿意,可以告诉我:
我可以直接给你精确修复命令。