在 Ubuntu 上“恢复 Tomcat 日志”通常分几种情况,不同情况做法不一样。下面按最常见场景给你一个完整说明。
Tomcat 默认日志目录是:
/opt/tomcat/logs/
# 或
/var/log/tomcat*/
常见日志文件:
| 文件 | 说明 |
|---|---|
catalina.out |
主日志(最常用) |
catalina.2025-01-21.log |
按日期 |
localhost.log |
应用日志 |
host-manager.log |
管理日志 |
access_log_*.txt |
访问日志 |
如果 Tomcat 没重启,日志文件虽然被删,但文件句柄还在内存中。
ps aux | grep tomcat
或
jps
lsof | grep deleted | grep catalina
你会看到类似:
java 12345 /opt/tomcat/logs/catalina.out (deleted)
/proc 恢复ls -l /proc/12345/fd | grep catalina
找到 fd 编号,比如 42:
cp /proc/12345/fd/42 /opt/tomcat/logs/catalina.out
✅ 恢复成功!
⚠️ Tomcat 一旦重启,就再也无法这样恢复了
logrotate 自动删除Ubuntu 默认会轮转 Tomcat 日志:
cat /etc/logrotate.d/tomcat*
如果你看到:
rotate 7
说明只保留 7 天。
✅ 恢复方式:
logging.properties 被改坏systemctl status tomcat
ls -ld /opt/tomcat/logs
权限应该是:
drwxr-x--- tomcat tomcat logs
修复权限:
sudo chown -R tomcat:tomcat /opt/tomcat/logs
sudo chmod 750 /opt/tomcat/logs
catalina.out 无限增长修改 conf/logging.properties:
handlers = 1catalina.org.apache.juli.AsyncFileHandler
或使用 logrotate:
/opt/tomcat/logs/catalina.out {
copytruncate
daily
rotate 30
compress
missingok
}
rsync -av /opt/tomcat/logs/ /backup/tomcat-logs/
| 场景 | 能否恢复 |
|---|---|
| Tomcat 正在运行 + 日志被删 | ✅ 可恢复 |
| Tomcat 已重启 | ❌ 不可恢复 |
| 被 logrotate 清理 | ❌ 除非有备份 |
| 日志没生成 | ✅ 修配置即可 |
如果你愿意,可以把下面信息发我,我可以精确告诉你该怎么做:
catalina.out 还是别的我可以直接给你一套可复制执行的命令。