温馨提示×

debian tomcat日志为何不写

小樊
40
2026-09-16 11:16:03
栏目: 智能运维

在 Debian 上 Tomcat **日志不写(或写不出来)**通常是下面几类原因导致的,可以按顺序排查。


一、确认你指的是哪种“日志”

Tomcat 常见日志有两类:

  1. catalina.out
    • catalina.sh 启动脚本输出
    • 通常在:
      /var/log/tomcat9/catalina.out
      
  2. logging.properties 控制的日志
    • catalina.log
    • localhost.log
    • host-manager.log
    • manager.log

二、Debian 下最常见原因

1️⃣ 使用 systemd 启动,stdout 没重定向到 catalina.out

Debian 默认用:

systemctl start tomcat9

这种情况下:

  • catalina.out 可能根本不会更新
  • 日志在 journalctl

查看方式:

journalctl -u tomcat9

✅ 这是最常见原因


2️⃣ 日志目录权限不对

Debian 的 Tomcat 通常以 tomcat 用户运行:

ps aux | grep tomcat

检查目录权限:

ls -ld /var/log/tomcat9
ls -l /var/log/tomcat9

如果是 root 创建但属主不对:

chown -R tomcat:adm /var/log/tomcat9
chmod 750 /var/log/tomcat9

3️⃣ logging.properties 被改坏或未生效

路径通常是:

/etc/tomcat9/logging.properties

重点检查:

handlers = 1catalina.org.apache.juli.FileHandler, ...

以及:

1catalina.org.apache.juli.FileHandler.directory = /var/log/tomcat9

如果目录不存在或不可写 → 不写日志


4️⃣ CATALINA_OUT 被清空或指向 /dev/null

检查:

grep CATALINA_OUT /etc/default/tomcat9

或:

echo $CATALINA_OUT

如果看到:

CATALINA_OUT=/dev/null

那就是“故意不写”


5️⃣ Tomcat 根本没启动成功

看是否真的在跑:

systemctl status tomcat9

如果启动失败:

  • 不会写业务日志
  • 错误信息只在 journalctlcatalina.out 第一次启动时报

6️⃣ 应用自身日志框架问题(Logback / Log4j)

如果是 应用不写日志

  • 检查 logback.xml / log4j2.xml
  • 确认路径可写
  • Docker / systemd 下相对路径容易出错

三、快速排查清单(建议按顺序)

# 1. 是否在运行
systemctl status tomcat9

# 2. 系统日志
journalctl -u tomcat9 -n 100

# 3. 日志目录
ls -l /var/log/tomcat9

# 4. 配置
cat /etc/tomcat9/logging.properties

# 5. 权限
ps aux | grep java

四、如果你愿意,我可以进一步帮你

你可以贴出:

  • Debian 版本(cat /etc/os-release
  • Tomcat 版本
  • 启动方式(systemd / 手动)
  • ls -l /var/log/tomcat9
  • journalctl -u tomcat9 | tail -n 50

我可以直接帮你定位是哪一条导致不写日志

0