温馨提示×

tomcat ubuntu日志为何丢失

小樊
48
2026-09-24 21:25:33
栏目: 智能运维

Tomcat 在 Ubuntu 上“日志丢失”通常不是真的被删了,而是路径、权限、配置或 systemd 重定向导致你没看到预期日志。下面按最常见原因逐一说明。


一、最常见原因:被 systemd 接管了(你没看对地方)

在 Ubuntu 上如果用:

systemctl start tomcat

Tomcat 的 stdout / stderr(包括 catalina.out)不会写到文件,而是进 journald。

现象

  • logs/catalina.out 为空或不更新
  • 应用 System.out.println 看不到
  • 日志“像丢失了一样”

查看方式

journalctl -u tomcat
journalctl -u tomcat -f

✅ 这是正常现象,不是日志丢了。


二、logs 目录权限问题(非常常见)

原因

  • Tomcat 以 tomcat 用户运行
  • logs/ 目录属主不是 tomcat
  • Ubuntu 升级 / 手动解压导致权限错乱

检查

ls -ld /opt/tomcat/logs
ps aux | grep tomcat

修复示例

sudo chown -R tomcat:tomcat /opt/tomcat/logs
sudo chmod 755 /opt/tomcat/logs

三、log4j / logging.properties 配置错误

1️⃣ logging.properties 指向不存在路径

1catalina.org.apache.juli.FileHandler.directory = ${catalina.base}/logs

如果:

  • CATALINA_BASE 不对
  • logs 目录不存在

→ 日志直接丢弃

2️⃣ log4j2 / logback 配置错误

常见问题:

  • appenders 没绑定 logger
  • 文件路径写死但无写权限
  • 滚动策略把旧日志滚没了

四、日志被滚动 / 压缩 / 清掉

Ubuntu 默认有 logrotate

/etc/logrotate.d/tomcat

可能配置:

  • 每天轮转
  • 保留 7 天
  • 压缩后删除

检查

ls -lh /opt/tomcat/logs
cat /etc/logrotate.d/tomcat

五、Tomcat 启动方式不同导致路径不同

启动方式 catalina.out 位置
bin/startup.sh logs/catalina.out
systemctl journald
docker 容器内 / 挂载卷

六、磁盘满 / inode 满(沉默失败)

df -h
df -i

磁盘满时:

  • Tomcat 不报错
  • 日志直接写不进去

七、你以为的“日志”其实没开启

比如:

  • 访问日志 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

如果你愿意,我可以直接帮你定位

请告诉我:

  1. Ubuntu 版本
  2. Tomcat 版本
  3. 启动方式(apt / 手动 / docker)
  4. 哪个日志“丢了”(catalina / access / 应用日志)

我可以给你精确修复命令。

0 踩