温馨提示×

Tomcat日志Ubuntu为何为空

小樊
36
2026-08-05 15:02:00
栏目: 智能运维

在 Ubuntu 上 Tomcat 日志为空,通常不是“没产生日志”,而是路径、权限或配置问题。下面按最常见原因逐一排查,基本都能定位到。


一、先确认你找的是哪个日志

Tomcat 常见日志有两类:

1️⃣ 标准输出日志(最容易被忽略)

  • 文件位置(取决于安装方式):
    • apt 安装
      /var/log/tomcat9/catalina.out
      
    • 手动安装(tar.gz)
      $CATALINA_HOME/logs/catalina.out
      
  • 如果 Tomcat 是通过 systemd 启动,catalina.out 可能为空,日志被 systemd 接管了。

✅ 查看 systemd 日志:

journalctl -u tomcat9
# 或
journalctl -u tomcat

二、最常见原因汇总(重点)

✅ 1. Tomcat 没真正启动

日志为空,但进程不存在。

检查:

systemctl status tomcat9
ps -ef | grep tomcat

如果没启动,看启动失败原因:

journalctl -xe

✅ 2. 日志目录没有写权限(非常常见)

Ubuntu 下 tomcat 以 tomcat 用户运行,但 logs 目录属于 root。

检查权限:

ls -ld /var/log/tomcat9

修复(示例):

sudo chown -R tomcat:tomcat /var/log/tomcat9
sudo chmod 755 /var/log/tomcat9

如果是手动安装:

chown -R tomcat:tomcat /opt/tomcat/logs

✅ 3. logging.properties 被改坏或清空

Tomcat 使用 logging.properties

/etc/tomcat9/logging.properties
# 或
$CATALINA_HOME/conf/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.

如果文件被清空,日志会直接消失。


✅ 4. 日志被 systemd 接管(catalina.out 为空)

Ubuntu 使用 systemd,stdout 不再写 catalina.out

现象:

  • catalina.out 为空
  • journalctl 里能看到日志

✅ 想恢复 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

✅ 5. 磁盘空间满

日志写不进去,但进程不报错。

检查:

df -h

✅ 6. 应用自身没打日志

不是 Tomcat 的问题,而是你的 web 应用没配置日志

  • 没用 log4j / logback
  • 或日志路径指向不存在目录

检查应用日志配置(如 logback.xml / log4j2.xml


三、快速自检清单 ✅

依次执行:

systemctl status tomcat9
journalctl -u tomcat9 --no-pager -n 50
ls -l /var/log/tomcat9
df -h

四、总结一句话

Ubuntu 上 Tomcat 日志为空,90% 是:systemd 接管日志 + 权限问题 + logging.properties 配置异常。


如果你愿意,可以把下面信息发我,我可以精确判断

  1. Ubuntu 版本
  2. Tomcat 安装方式(apt / 手动)
  3. Tomcat 版本
  4. ls -l /var/log/tomcat9 输出

我可以直接告诉你该改哪一行。

0