在 Debian 下 Tomcat 没有日志(catalina.out / localhost 日志等),通常不是 Tomcat 本身坏了,而是 日志配置、权限、systemd 或目录不存在 造成的。下面按最常见原因逐一排查。
| 原因 | 说明 |
|---|---|
| 日志目录不存在 | logs/ 目录被删或不存在 |
| 权限不足 | Tomcat 用户无法写日志 |
| systemd 重定向 | 输出被 systemd 接管 |
| logging.properties 被改 | JULI 日志未启用 |
| 使用 apt 安装 | 日志路径和手动安装不同 |
| 磁盘满 / inode 满 | 无法创建新文件 |
| Tomcat 未真正启动 | 启动失败所以没日志 |
# 日志位置
/var/log/tomcat9/
而不是:
/usr/share/tomcat9/logs/
✅ apt 安装时 logs 目录是软链接
ls -l /usr/share/tomcat9/logs
通常指向:
/var/log/tomcat9
ls -ld /var/log/tomcat9
ls -ld /usr/share/tomcat9/logs
如果不存在:
sudo mkdir -p /var/log/tomcat9
sudo chown -R tomcat:tomcat /var/log/tomcat9
sudo chmod 750 /var/log/tomcat9
Debian 默认 Tomcat 用户是
tomcat
systemctl status tomcat9
✅ catalina.out 默认不会生成 因为输出被 systemd 接管。
journalctl -u tomcat9
或实时查看:
journalctl -u tomcat9 -f
如果你想恢复 catalina.out:
sudo systemctl edit tomcat9
加入:
[Service]
StandardOutput=append:/var/log/tomcat9/catalina.out
StandardError=append:/var/log/tomcat9/catalina.out
然后:
sudo systemctl daemon-reload
sudo systemctl restart tomcat9
/etc/tomcat9/logging.properties
确保有以下内容:
handlers = 1catalina.org.apache.juli.AsyncFileHandler
1catalina.org.apache.juli.AsyncFileHandler.level = FINE
1catalina.org.apache.juli.AsyncFileHandler.directory = ${catalina.base}/logs
1catalina.org.apache.juli.AsyncFileHandler.prefix = catalina.
如果目录被改成不存在路径,日志会直接消失。
df -h
df -i
如果满了:
sudo apt clean
sudo journalctl --vacuum-size=100M
ps aux | grep tomcat
或:
systemctl status tomcat9
如果启动失败,通常:
查看 systemd 报错:
journalctl -xe
# 1. 日志目录
ls /var/log/tomcat9
# 2. 权限
ls -ld /var/log/tomcat9
# 3. systemd 日志
journalctl -u tomcat9 -n 50
# 4. 磁盘
df -h && df -i
# 5. 配置文件
cat /etc/tomcat9/logging.properties
Debian 下 Tomcat 无日志,90% 是 systemd 接管输出 + 日志目录权限问题。
如果你愿意,可以把下面信息贴出来,我可以直接帮你定位:
systemctl status tomcat9/var/log/tomcat9 目录内容