温馨提示×

debian tomcat日志为何丢失

小樊
46
2026-09-01 08:56:22
栏目: 智能运维

在 Debian 上运行 Tomcat 时,日志“丢失”通常不是真的被删除,而是位置、配置或轮转出了问题。下面按常见原因 → 排查方法 → 解决办法来说明。


一、先确认:你指的是哪种日志?

Tomcat 常见日志有三类:

  1. catalina.out
    • 标准输出/错误
    • 位置:/var/log/tomcatX/catalina.out
  2. logs/*.log(catalina、localhost、host-manager、manager)
    • logging.properties 控制
  3. systemd journal
    • 如果用 systemd 启动 Tomcat

二、最常见原因(Debian 特有)

1️⃣ Tomcat 是用 systemd 启动的,但 catalina.out 没内容

原因

  • Debian 的 Tomcat 包(tomcat9 / tomcat10)默认不写 catalina.out
  • 日志直接进 systemd journal

检查

journalctl -u tomcat9

解决

  • 看 journal:
journalctl -u tomcat9 --since "1 hour ago"
  • 或改 bin/catalina.sh 强制输出(不推荐,违背 Debian 规范)

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

现象

  • 启动后 logs 目录为空
  • 或日志写到一半消失

原因

  • Tomcat 以 tomcat 用户运行
  • /var/log/tomcatX 权限不对

检查

ls -ld /var/log/tomcat9
ps aux | grep tomcat

修复

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

3️⃣ logrotate 把日志“转走/删了”

Debian 默认有:

/etc/logrotate.d/tomcat9

问题

  • 轮转后旧日志被压缩或删除
  • 你只看当前文件,以为“丢了”

检查

ls -lh /var/log/tomcat9*

确认

cat /etc/logrotate.d/tomcat9

4️⃣ logging.properties 被改或不存在

位置

/etc/tomcat9/logging.properties

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

常见问题

  • 日志级别设为 OFF
  • 路径写错

最小可用配置示例

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

1catalina.org.apache.juli.FileHandler.level = FINE
1catalina.org.apache.juli.FileHandler.directory = ${catalina.base}/logs
1catalina.org.apache.juli.FileHandler.prefix = catalina.

5️⃣ 你找错了 Tomcat 实例

Debian 可能同时存在:

  • /usr/share/tomcat9
  • /var/lib/tomcat9
  • /var/log/tomcat9

正确顺序

CATALINA_BASE=/var/lib/tomcat9
CATALINA_HOME=/usr/share/tomcat9
LOG=/var/log/tomcat9

6️⃣ 应用自己把日志关了 / 写别处

  • Spring Boot → 默认写 logs/
  • Log4j / Logback → 可能写到 /opt/xxx/logs

三、快速排查清单(建议照做)

# 1. 看 journal
journalctl -u tomcat9

# 2. 看日志目录
ls -lh /var/log/tomcat9

# 3. 看进程用户
ps aux | grep java

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

# 5. 看轮转
cat /etc/logrotate.d/tomcat9

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

你可以直接贴:

  • Debian 版本(cat /etc/os-release
  • Tomcat 版本
  • 启动方式(apt / 手动 / docker)
  • ls -lh /var/log/tomcat* 输出

我可以告诉你日志到底去哪了

0