Ubuntu 上 Tomcat 日志突然为空,通常不是“被清空”,而是日志没有被写入或路径/配置发生了变化。下面按最常见原因 → 排查方法给你一个系统性的排查清单。
如果 Tomcat 没跑起来,自然不会有新日志。
检查:
ps -ef | grep tomcat
或:
systemctl status tomcat
如果 没启动成功,重点看:
catalina.sh run
或:
tail -f /var/log/syslog
journalctl -xe
Tomcat 进程用户无法写日志目录,日志直接被丢弃。
常见于:
root 启动过,后来改成 tomcat 用户/var/log/tomcat* 权限检查:
ls -ld /var/log/tomcat*
修复(示例):
sudo chown -R tomcat:tomcat /var/log/tomcat9
sudo chmod -R 755 /var/log/tomcat9
Ubuntu 下 Tomcat 用 systemd 启动时,stdout/stderr 不会写 catalina.out。
检查:
systemctl status tomcat
journalctl -u tomcat
✅ 这是正常现象,不是 bug。
Tomcat 的 JULI 日志配置出问题,会导致日志直接消失。
检查:
vim /opt/tomcat/conf/logging.properties
# 或
vim /etc/tomcat9/logging.properties
关键项是否还在:
.handlers = 1catalina.org.apache.juli.AsyncFileHandler
这是 Linux 经典坑:
检查:
lsof | grep deleted | grep tomcat
解决:
systemctl restart tomcat
如果你用:
那 catalina.out 可能是空的。
检查:
ls /var/log/tomcat*/logs
真实日志可能在:
application.log
spring.log
按顺序执行:
# 1. Tomcat 在跑吗?
systemctl status tomcat
# 2. 日志目录权限
ls -ld /var/log/tomcat*
# 3. 是否被 systemd 接管
journalctl -u tomcat -f
# 4. 文件是否被删但未重启
lsof | grep deleted | grep tomcat
# 5. 重启试试
systemctl restart tomcat
| 文件 | 说明 |
|---|---|
| catalina.out | stdout/stderr(一般不推荐) |
| catalina.YYYY-MM-DD.log | Tomcat 启动日志 |
| localhost.*.log | 应用异常 |
| host-manager / manager | 管理日志 |
你可以直接贴出:
systemctl status tomcat 输出我可以 直接告诉你哪一步导致日志为空 ✅