温馨提示×

什么导致ubuntu tomcat日志异常

小樊
45
2026-08-31 11:37:48
栏目: 智能运维

Ubuntu 上 Tomcat 日志异常(不输出、乱码、缺失、爆盘、报错)通常不是单一原因,而是系统、Tomcat 配置、应用代码或权限共同作用的结果。下面按常见原因 → 排查方向给你一个系统性的分析。


一、最常见原因汇总(快速对照)

现象 常见原因
日志不生成 logs 目录无写权限
日志突然停止 磁盘满 / inode 满
中文乱码 系统编码不一致
日志巨增 应用无限打日志
日志为空 使用了 systemd
日志格式异常 logging.properties 被改
启动无日志 JAVA_HOME / 环境变量错误

二、目录与权限问题(最常见)

1️⃣ logs 目录无写权限

ls -ld /opt/tomcat/logs

如果 Tomcat 以 tomcat 用户运行:

sudo chown -R tomcat:tomcat /opt/tomcat/logs
sudo chmod 755 /opt/tomcat/logs

⚠️ 不要用 root 直接启 Tomcat 然后换用户


三、磁盘或 inode 问题

2️⃣ 磁盘满了

df -h

3️⃣ inode 满了(日志小文件多)

df -i

排查:

du -sh /opt/tomcat/logs/*

✅ 解决:

  • 删除旧日志
  • 配置日志轮转(logrotate)

四、Systemd 吞掉日志(非常常见)

Ubuntu 下用 systemctl start tomcat 时:

  • catalina.out 不更新
  • 日志跑到 journalctl

查看:

journalctl -u tomcat -f

✅ 解决:
systemd service 文件中:

StandardOutput=append:/opt/tomcat/logs/catalina.out
StandardError=append:/opt/tomcat/logs/catalina.out

五、Tomcat 日志配置问题

4️⃣ logging.properties 被改坏

路径:

/opt/tomcat/conf/logging.properties

常见异常:

  • handlers 被误删
  • 日志级别错误

推荐最小正常配置:

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.

六、应用日志导致异常

5️⃣ Log4j / Logback 冲突

现象:

  • Tomcat 启动正常
  • 但日志不输出或格式异常

检查:

WEB-INF/lib | grep log

✅ 解决:

  • 统一日志实现
  • 排除重复依赖

七、Java / 系统编码问题

6️⃣ 中文乱码

locale

如果不是:

zh_CN.UTF-8 或 en_US.UTF-8

解决:

sudo locale-gen zh_CN.UTF-8
sudo update-locale

并在 setenv.sh

export JAVA_OPTS="$JAVA_OPTS -Dfile.encoding=UTF-8"

八、内存或 JVM 问题

7️⃣ OOM 导致日志突然中断

查看:

grep -i oom /var/log/syslog

Tomcat 启动参数建议:

-Xms512m -Xmx1024m

九、推荐的标准排查顺序 ✅

# 1. 磁盘
df -h && df -i

# 2. 权限
ls -ld /opt/tomcat/logs

# 3. 当前日志
ls -lh /opt/tomcat/logs

# 4. systemd
journalctl -u tomcat -n 100

# 5. 配置
cat /opt/tomcat/conf/logging.properties

十、如果你愿意,我可以更精确定位

你可以直接贴出:

  1. 具体异常日志内容
  2. Tomcat 版本
  3. 是否使用 systemd
  4. 日志是“没有”还是“异常”

我可以帮你逐行定位到根因,而不是泛泛排查。

0