1. 定位Tomcat日志文件
Debian系统中,Tomcat日志默认存储在/var/log/tomcatX/目录(X为Tomcat主版本号,如9对应/var/log/tomcat9/)。核心日志文件包括:
server.xml配置开启)。2. 调整日志级别,过滤冗余信息
日志级别从低到高分为FINEST(最详细)、FINE、CONFIG、INFO(默认)、WARNING、SEVERE(最严重)。通过修改conf/logging.properties文件,可针对性降低不必要的日志输出:
WARNING:org.apache.catalina.level = WARNING;org.apache.catalina.startup.level = WARNING;java.util.logging.ConsoleHandler.level = WARNING。3. 配置日志轮转,防止文件膨胀
使用logrotate工具自动管理日志文件,避免单个日志文件过大导致磁盘空间耗尽。编辑/etc/logrotate.d/tomcat(若不存在则新建),添加以下配置:
/var/log/tomcat9/*.log {
daily # 每日轮转
missingok # 忽略缺失文件
rotate 30 # 保留30天日志
compress # 压缩旧日志(节省空间)
delaycompress # 延迟压缩(避免影响当前日志写入)
notifempty # 空日志不轮转
create 640 tomcat tomcat # 创建新日志文件并设置权限
sharedscripts # 所有日志轮转完成后执行脚本
postrotate
systemctl restart tomcat >/dev/null 2>&1 || true
endscript
}
此配置可实现日志的自动清理与归档,释放磁盘空间。
4. 实时监控与异常检测
通过tail -f命令实时查看关键日志(如catalina.out),快速捕捉错误信息:
tail -f /var/log/tomcat9/catalina.out | grep -E "ERROR|SEVERE|Exception"
重点关注以下内容:
ERROR、SEVERE、Exception(如NullPointerException、SQLException);grep " 500 " /var/log/tomcat9/access_log.*.txt统计500错误率,识别高频失败请求。5. 使用高级日志分析工具
借助ELK Stack(Elasticsearch+Logstash+Kibana)或Graylog等工具,对日志进行集中化存储、分析与可视化:
6. 关联系统监控与预警
将Tomcat日志与系统监控工具(如Prometheus+Grafana)结合,监控关键指标并设置预警:
jstat -gcutil <pid> 1000获取GC情况,若频繁Full GC则可能存在内存泄漏;top、htop监控CPU、内存使用率,若Tomcat进程占用过高则需优化线程池或应用性能;7. 优化访问日志,分析性能瓶颈
在conf/server.xml中配置AccessLogValve,记录详细的访问信息并启用日志轮转:
<Valve className="org.apache.catalina.valves.AccessLogValve"
directory="/var/log/tomcat9"
prefix="access_log."
suffix=".txt"
rotatable="true"
maxDays="30"
pattern="%h %l %u %t "%r" %s %b %D %{Referer}i %{User-Agent}i" />
%D记录请求处理时间(毫秒),%{Referer}i记录来源页面,%{User-Agent}i记录客户端浏览器信息;awk计算平均响应时间(如awk '{sum+=$10; count++} END {print "Average time: " sum/count "ms"}' access_log.2025-10-18.txt),识别慢请求(如响应时间超过1秒的请求),进而优化SQL查询、缓存策略或代码逻辑。8. 禁用不必要的日志输出
bin/catalina.sh,将CATALINA_OUT指向/dev/null(仅保留关键日志到文件):if [ -z "$CATALINA_OUT" ] ; then
CATALINA_OUT=/dev/null
fi
stdout/stderr日志,可将conf/logging.properties中相关handler级别设为OFF:1catalina.org.apache.juli.FileHandler.level = OFF
2localhost.org.apache.juli.FileHandler.level = OFF
此操作可减少磁盘IO,提升Tomcat性能。