温馨提示×

为什么debian tomcat日志丢失

小樊
41
2026-09-22 12:59:43
栏目: 智能运维

Debian 上 Tomcat 日志丢失通常不是“被删了”,而是路径、权限、配置或系统机制导致没生成/被轮转走。下面按最常见原因逐条说明,并给出排查方法。


1. 日志目录权限不对(最常见)

Debian 下 Tomcat 多以 tomcat 用户运行(如 tomcat9、tomcat10)。

问题表现

  • catalina.out 不存在
  • logs/ 目录为空
  • 重启后日志突然没了

原因

  • logs/ 属主不是 tomcat 用户
  • 磁盘是 root 创建,tomcat 写不进去

检查

ls -ld /var/lib/tomcat9/logs
ls -l /var/lib/tomcat9/logs

修复

chown -R tomcat9:tomcat9 /var/lib/tomcat9/logs
chmod 750 /var/lib/tomcat9/logs

2. 你找错了日志路径

Debian 的 Tomcat 是分包结构,和官方 tar.gz 不一样。

类型 路径
Debian 包 /var/lib/tomcat9/logs
官方包 apache-tomcat/bin/../logs
systemd journalctl -u tomcat9

很多人只看

/opt/tomcat/logs   # 空的

正确做法

ls /var/lib/tomcat9/logs
journalctl -u tomcat9

3. catalina.out 被 systemd 接管

Debian + systemd 下:

  • catalina.out 可能根本不写
  • 输出全进 journald

验证

journalctl -u tomcat9 --since "1 hour ago"

如果你想恢复 catalina.out:

systemctl edit tomcat9

加入:

[Service]
StandardOutput=append:/var/lib/tomcat9/logs/catalina.out
StandardError=append:/var/lib/tomcat9/logs/catalina.out

4. logging.properties 被改坏

文件位置:

/etc/tomcat9/logging.properties

常见错误:

  • 注释掉 1catalina.org.apache.juli.FileHandler
  • 指向不存在目录

最小可用配置

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

5. logrotate 把日志清掉了

Debian 默认有:

/etc/logrotate.d/tomcat9

问题:

  • 轮转后未 restart
  • copytruncate 没开,导致文件被改名但 tomcat 仍写旧 fd

检查

ls -l /var/lib/tomcat9/logs
cat /etc/logrotate.d/tomcat9

推荐配置

/var/lib/tomcat9/logs/catalina.out {
    daily
    rotate 7
    copytruncate
    missingok
}

6. 磁盘满 / inode 满

df -h
df -i

Tomcat 不会报错,只是静默不写。


7. Tomcat 根本没启动成功

日志丢失其实是:启动就崩

看:

systemctl status tomcat9
journalctl -xe

快速排查清单(照做)

systemctl status tomcat9
journalctl -u tomcat9 -n 50
ls -l /var/lib/tomcat9/logs
df -h
cat /etc/tomcat9/logging.properties

如果你愿意,可以告诉我:

  • Debian 版本
  • Tomcat 版本
  • 怎么安装的(apt / 手动)
  • 丢失的是哪种日志(catalina.out / localhost / access)

我可以直接给你精确修复命令。

0 踩