Tomcat 在 Ubuntu 上“日志丢失”通常不是真的被删了,而是路径、权限、配置或 systemd 重定向导致你没看到预期日志。下面按最常见原因逐一说明。
在 Ubuntu 上如果用:
systemctl start tomcat
Tomcat 的 stdout / stderr(包括 catalina.out)不会写到文件,而是进 journald。
logs/catalina.out 为空或不更新System.out.println 看不到journalctl -u tomcat
journalctl -u tomcat -f
✅ 这是正常现象,不是日志丢了。
tomcat 用户运行logs/ 目录属主不是 tomcatls -ld /opt/tomcat/logs
ps aux | grep tomcat
sudo chown -R tomcat:tomcat /opt/tomcat/logs
sudo chmod 755 /opt/tomcat/logs
1catalina.org.apache.juli.FileHandler.directory = ${catalina.base}/logs
如果:
CATALINA_BASE 不对logs 目录不存在→ 日志直接丢弃
常见问题:
appenders 没绑定 loggerUbuntu 默认有 logrotate
/etc/logrotate.d/tomcat
可能配置:
ls -lh /opt/tomcat/logs
cat /etc/logrotate.d/tomcat
| 启动方式 | catalina.out 位置 |
|---|---|
| bin/startup.sh | logs/catalina.out |
| systemctl | journald |
| docker | 容器内 / 挂载卷 |
df -h
df -i
磁盘满时:
比如:
AccessLogValve 没开manager / host-manager 日志级别太高# 1. 看进程用户
ps aux | grep tomcat
# 2. 看目录权限
ls -ld /opt/tomcat/logs
# 3. 看 systemd 日志
journalctl -u tomcat -n 100
# 4. 看磁盘
df -h; df -i
# 5. 看配置
cat conf/logging.properties
请告诉我:
我可以给你精确修复命令。