在 Ubuntu 上 Tomcat 日志写入变慢 是一个比较常见的问题,通常不是 Tomcat 本身慢,而是日志机制、系统环境或配置导致的。下面按常见原因 → 排查方法 → 解决建议来说明。
System.out.println 或 console 日志如果应用里大量使用:
System.out.println(...)
或 logging.console 开启,Tomcat 会把日志输出到:
catalina.out问题:
catalina.out 是单线程顺序写✅ 解决
System.outlog4j2 / logbackcatalina.out<Root level="debug">
或
logging.level.root=DEBUG
结果:
✅ 解决
INFO 或 WARNlogging.level.root=INFO
Ubuntu 上 Tomcat 日志慢,80% 是磁盘问题
检查:
iostat -x 1
或
iotop
常见问题:
/var/log✅ 解决
df -h
catalina.out 常见几个 GB
问题:
✅ 解决
使用 logrotate:
/etc/logrotate.d/tomcat
示例:
/opt/tomcat/logs/catalina.out {
daily
rotate 7
compress
missingok
notifempty
copytruncate
}
同步日志会阻塞业务线程
✅ 解决 使用异步日志:
log4j2:
<AsyncRoot level="info">
logback:
<appender name="ASYNC" class="ch.qos.logback.classic.AsyncAppender">
如果你把 Tomcat 作为 systemd 服务:
journalctl -u tomcat
问题:
✅ 解决
[Service]
StandardOutput=append:/opt/tomcat/logs/catalina.out
StandardError=append:/opt/tomcat/logs/catalina.out
Tomcat 访问日志:
%h
会做 DNS 反向解析
✅ 解决
%a
或
enableLookups="false"
# 磁盘
df -h
iostat -x 1
# 日志大小
du -sh /opt/tomcat/logs/*
# Tomcat 进程
ps -ef | grep tomcat
# 日志级别
grep -R "DEBUG" /opt/tomcat/conf
✅ 生产环境推荐:
如果你愿意,可以贴出:
server.xml 或 log4j2.xml我可以直接帮你精准定位是哪一条导致的慢。