CentOS 上 Tomcat 日志优化实操指南
一 核心目标与总体思路
- 控制单个日志文件体积,避免 catalina.out 无限增长导致磁盘占满或打开缓慢。
- 按时间与大小进行自动切割,便于归档、检索与清理。
- 降低日志噪声,减少不必要的输出,提升性能与可读性。
- 建立集中化与监控告警机制,提前发现异常。
二 切割 catalina.out 的两种可靠方案
三 减少日志量与访问日志优化
- 调整运行日志级别:编辑 $CATALINA_HOME/conf/logging.properties,将不需要的包或整体级别调高(如从 FINE 调到 WARNING/ERROR),示例:
- 1catalina.org.apache.juli.AsyncFileHandler.level = WARNING
- 2localhost.org.apache.juli.AsyncFileHandler.level = WARNING
- 也可按需关闭:1catalina.org.apache.juli.AsyncFileHandler.level = OFF
- 修改后重启 Tomcat 生效。
- 优化访问日志:在 $CATALINA_HOME/conf/server.xml 中调整或禁用 AccessLogValve,减少不必要的字段与输出:
- 关闭访问日志(如非必须):
- <Valve className=“org.apache.catalina.valves.AccessLogValve” … /> 注释或移除
- 精简 pattern,保留关键字段(示例):
- pattern=“%h %t "%r" %s %b”
- 如无需 DNS 反查,设置 resolveHosts=“false” 提升性能。
四 集中化与监控告警
- 集中化:将 Tomcat 日志通过 rsyslog 发送到远程日志中心(如 ELK/Graylog/Splunk),便于统一检索、分析与长期留存。
- 监控与预警:对 /opt/tomcat/logs 所在分区设置磁盘空间监控与阈值告警(如 Zabbix/Nagios),在日志激增或磁盘将满时及时处置。
五 快速检查与常用命令
- 实时查看:tail -f $CATALINA_HOME/logs/catalina.out
- 按天查看:tail -f $CATALINA_HOME/logs/catalina.$(date +%F).out
- 手动轮转:logrotate -f /etc/logrotate.d/tomcat
- 语法校验:logrotate -d /etc/logrotate.d/tomcat
- 服务日志(若使用 systemd):journalctl -u tomcat.service -f
- 重启 Tomcat:systemctl restart tomcat 或 $CATALINA_HOME/bin/shutdown.sh && $CATALINA_HOME/bin/startup.sh