温馨提示×

ubuntu tomcat日志为何不写

小樊
35
2026-09-03 12:08:07
栏目: 智能运维

在 Ubuntu 上 Tomcat 日志不写(没有任何日志或日志停止更新),常见原因和排查方法如下,按出现频率从高到低说明:


一、最常见原因

1. 日志目录权限不足(非常常见)

Tomcat 以 tomcat 用户运行,但对 logs 目录没有写权限。

排查

ls -ld /var/lib/tomcat9/logs
ls -l /var/lib/tomcat9/logs

修复

sudo chown -R tomcat:tomcat /var/lib/tomcat9/logs
sudo chmod 755 /var/lib/tomcat9/logs

2. 使用了 systemd,但日志被重定向到 journald

Ubuntu 上 Tomcat 通常通过 systemd 启动,catalina.out 不会写文件

现象

  • /var/lib/tomcat9/logs/ 没有 catalina.out
  • 日志只出现在:
journalctl -u tomcat9

说明 这是 Ubuntu 的默认行为,不是错误。


3. logging.properties 被修改或损坏

Tomcat 使用 conf/logging.properties

检查

cat /var/lib/tomcat9/conf/logging.properties

重点看:

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

如果目录被改成不存在路径,日志不会写。


二、Tomcat 没真正启动

4. Tomcat 启动失败

如果 Tomcat 没起来,自然没日志。

检查

systemctl status tomcat9
journalctl -u tomcat9 -n 50

三、磁盘 / 空间问题

5. 磁盘满了

df -h

磁盘 100% 时 Tomcat 无法写日志。


6. inode 用尽

df -i

四、日志被 logrotate 截断后未 reopen

7. logrotate 后 Tomcat 不重新打开日志

Ubuntu 默认 logrotate 会:

copytruncate

如果配置错误,可能导致日志停止。

检查

cat /etc/logrotate.d/tomcat9

五、应用层问题

8. 应用使用了其他日志框架

  • logback
  • log4j2

这些框架 不会写 catalina.out,只写自己配置的日志文件。


快速自查清单 ✅

# 1. Tomcat 是否在跑
systemctl status tomcat9

# 2. 看 journal 日志
journalctl -u tomcat9

# 3. 看 logs 目录
ls -l /var/lib/tomcat9/logs

# 4. 权限
ps aux | grep tomcat

如果你愿意

你可以贴出:

  • Ubuntu 版本
  • Tomcat 版本
  • systemctl status tomcat9
  • ls -l /var/lib/tomcat9/logs

我可以帮你精确定位是哪一种原因

0