温馨提示×

为什么ubuntu tomcat日志空了

小樊
40
2026-08-31 11:43:46
栏目: 智能运维

Ubuntu 上 Tomcat 日志突然为空,通常不是“被清空”,而是日志没有被写入路径/配置发生了变化。下面按最常见原因 → 排查方法给你一个系统性的排查清单。


一、最常见原因(90% 都在这里)

1️⃣ Tomcat 没有真正启动 / 启动失败

如果 Tomcat 没跑起来,自然不会有新日志。

检查:

ps -ef | grep tomcat

或:

systemctl status tomcat

如果 没启动成功,重点看:

catalina.sh run

或:

tail -f /var/log/syslog
journalctl -xe

2️⃣ 日志目录权限问题(非常常见)

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

3️⃣ 日志被 systemd 接管(Ubuntu 常见)

Ubuntu 下 Tomcat 用 systemd 启动时,stdout/stderr 不会写 catalina.out

检查:

systemctl status tomcat
journalctl -u tomcat

✅ 这是正常现象,不是 bug。


4️⃣ logging.properties 被改坏或清空

Tomcat 的 JULI 日志配置出问题,会导致日志直接消失。

检查:

vim /opt/tomcat/conf/logging.properties
# 或
vim /etc/tomcat9/logging.properties

关键项是否还在:

.handlers = 1catalina.org.apache.juli.AsyncFileHandler

5️⃣ 日志文件被删,但进程没重启(inode 问题)

这是 Linux 经典坑:

  • 日志文件被删
  • Tomcat 还在运行
  • 文件句柄还在
  • 磁盘上看不到,但日志还在写

检查:

lsof | grep deleted | grep tomcat

解决:

systemctl restart tomcat

6️⃣ 使用了 log4j / logback,但配置错了

如果你用:

  • log4j
  • logback
  • spring boot

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

三、不同日志文件说明(Ubuntu)

文件 说明
catalina.out stdout/stderr(一般不推荐)
catalina.YYYY-MM-DD.log Tomcat 启动日志
localhost.*.log 应用异常
host-manager / manager 管理日志

四、如果你愿意,我可以更精确帮你

你可以直接贴出:

  1. Ubuntu 版本
  2. Tomcat 版本
  3. 启动方式(systemd / 手动)
  4. 日志目录路径
  5. systemctl status tomcat 输出

我可以 直接告诉你哪一步导致日志为空

0