1. 调整日志级别,减少不必要的输出
Tomcat的日志级别决定了日志的详细程度,合理设置可避免无关信息占用磁盘空间。配置文件位于$CATALINA_BASE/conf/logging.properties(如/opt/tomcat/conf/logging.properties)。常见级别从低到高为:SEVERE(严重错误)、WARNING(警告)、INFO(一般信息)、CONFIG(配置信息)、FINE(详细调试)、FINER(更详细调试)、FINEST(最详细调试)。
INFO或WARNING,例如:org.apache.catalina.core.ContainerBase.[Catalina].level = INFOFINE)以捕获详细信息,但需避免过度开启:java.sql.level = FINE2. 配置日志轮转,防止文件过大
日志文件无限增长会占用大量磁盘空间,需通过轮转策略定期分割和清理。推荐使用Linux自带的logrotate工具(Debian默认安装),配置文件位于/etc/logrotate.d/tomcat。
/opt/tomcat/logs/catalina.out {
daily
rotate 14
compress
missingok
notifempty
create 640 tomcat tomcat
sharedscripts
postrotate
/bin/kill -USR1 $(cat /var/run/tomcat.pid) 2>/dev/null || true
endscript
}
daily:每天轮转一次;rotate 14:保留14个旧日志文件;compress:使用gzip压缩旧文件;postrotate:轮转后向Tomcat进程发送USR1信号,使其重新打开日志文件(避免日志中断)。logging.properties设置文件大小限制(如每个日志文件最大10MB,保留7个):catalina.org.apache.juli.FileHandler.limit = 10485760 # 10MB
catalina.org.apache.juli.FileHandler.count = 7 # 保留7个文件
配置后需重启Tomcat。3. 启用异步日志记录,提升性能
同步日志记录会阻塞Tomcat主线程,影响性能。Tomcat 8及以上版本支持异步日志,通过AsyncFileHandler替代ConsoleHandler。
logging.properties,将处理器替换为异步模式:handlers = 1catalina.org.apache.juli.AsyncFileHandler, 2localhost.org.apache.juli.AsyncFileHandler, 3manager.org.apache.juli.AsyncFileHandler, 4host-manager.org.apache.juli.AsyncFileHandler
此配置会将catalina、localhost、manager、host-manager等组件的日志改为异步记录,减少主线程阻塞。4. 优化访问日志配置,控制输出范围
访问日志记录了所有请求的详细信息(如IP、方法、状态码),默认可能开启且格式冗余。
server.xml($CATALINA_BASE/conf/server.xml)中,找到<Host>标签内的AccessLogValve配置,按需调整:
Valve标签;pattern属性调整日志字段(如仅记录IP、方法和状态码):<Valve className="org.apache.catalina.valves.AccessLogValve"
directory="logs"
prefix="access_log"
suffix=".txt"
pattern="%h %m %s"
resolveHosts="false"/>
directory指向合理的目录(如/var/log/tomcat),避免占用应用目录空间。5. 清理无用日志,释放磁盘空间
定期清理过期或无效日志,避免磁盘空间耗尽。
find命令删除超过指定天数的日志(如7天前):find /opt/tomcat/logs -name "*.log" -mtime +7 -delete
find /opt/tomcat/logs -name "catalina.out" -mtime +7 -delete
cron定时任务(如每天凌晨2点执行):0 2 * * * find /opt/tomcat/logs -name "*.log" -mtime +7 -delete && find /opt/tomcat/logs -name "catalina.out" -mtime +7 -delete
6. 使用专业日志分析工具,提升可维护性
对于生产环境,建议使用日志分析工具(如ELK Stack:Elasticsearch、Logstash、Kibana)集中管理Tomcat日志,实现可视化监控、关键词搜索和告警。
Logstash收集Tomcat日志(access_log、catalina.out等),存储到Elasticsearch,再通过Kibana展示分析结果(如请求量趋势、错误率统计)。NullPointerException),提升运维效率。