Ubuntu Tomcat日志清理策略
Logrotate是Linux系统原生日志管理工具,可自动实现日志轮转、压缩、删除旧日志,无需手动干预,是Tomcat日志清理的首选方案。
sudo apt-get install logrotate命令安装。/etc/logrotate.d/目录下创建tomcat配置文件(如sudo nano /etc/logrotate.d/tomcat),添加以下内容(根据实际路径调整):/var/log/tomcat/catalina.out {
daily # 每天轮转一次
rotate 7 # 保留最近7天的日志
compress # 压缩旧日志(节省空间)
missingok # 日志文件丢失时不报错
notifempty # 日志为空时不轮转
copytruncate # 复制原日志后清空,避免重启Tomcat
}
sudo logrotate -d /etc/logrotate.d/tomcat),若无错误可强制运行(sudo logrotate -f /etc/logrotate.d/tomcat)。Logrotate默认通过系统cron每日自动执行,无需额外配置。通过脚本定期删除旧日志文件,适合需要自定义清理逻辑的场景(如保留特定天数、清理特定文件类型)。
clear_tomcat_logs.sh,内容如下(替换/path/to/tomcat/logs为实际路径):#!/bin/bash
LOG_DIR="/path/to/tomcat/logs"
KEEP_DAYS=7 # 保留7天日志
echo "$(date '+%F %T') 开始清理Tomcat日志..." >> /var/log/clean_tomcat.log
find "$LOG_DIR" -type f -name "*.log" -mtime +$KEEP_DAYS -exec rm -f {} \; # 删除7天前的.log文件
echo "" > "$LOG_DIR/catalina.out" # 清空catalina.out
echo "$(date '+%F %T') 日志清理完成" >> /var/log/clean_tomcat.log
crontab -e添加以下内容,设置每天凌晨2点执行脚本:0 2 * * * /path/to/clear_tomcat_logs.sh
脚本会将清理记录输出到/var/log/clean_tomcat.log,便于后续审计。通过修改Tomcat配置文件,控制日志输出级别和文件大小,从源头上减少日志生成量。
logging.properties:编辑conf/logging.properties,调整日志级别(如将INFO改为WARNING,减少不必要的信息)和文件保留天数:handlers = 1catalina.org.apache.juli.AsyncFileHandler
.handlers = 1catalina.org.apache.juli.AsyncFileHandler
1catalina.org.apache.juli.AsyncFileHandler.level = WARNING # 设置日志级别
1catalina.org.apache.juli.AsyncFileHandler.directory = ${catalina.base}/logs
1catalina.org.apache.juli.AsyncFileHandler.prefix = catalina.
1catalina.org.apache.juli.AsyncFileHandler.maxDays = 7 # 保留7天日志
server.xml(可选):若不需要Access日志,可注释AccessLogValve配置(位于conf/server.xml中),避免生成access_log文件:<!--
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="localhost_access_log" suffix=".txt"
pattern="%h %l %u %t "%r" %s %b" />
-->
这些配置可减少日志文件的数量和大小,降低磁盘占用。Log4j提供更灵活的日志管理功能(如按大小分割、集中存储、异步记录),适合需要高级日志管理的场景。
log4j-1.2.17.jar和tomcat-juli.jar,放入Tomcat的lib目录。conf目录下创建log4j.properties,添加以下内容(示例为按天分割、保留10个备份):log4j.rootLogger=INFO, CATALINA
log4j.appender.CATALINA=org.apache.log4j.DailyRollingFileAppender
log4j.appender.CATALINA.File=/path/to/tomcat/logs/catalina.log
log4j.appender.CATALINA.DatePattern='.'yyyy-MM-dd
log4j.appender.CATALINA.MaxFileSize=10MB
log4j.appender.CATALINA.MaxBackupIndex=10
log4j.appender.CATALINA.layout=org.apache.log4j.PatternLayout
log4j.appender.CATALINA.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n
catalina.sh:在文件开头添加export CATALINA_OUT="/path/to/tomcat/logs/catalina.%Y%m%d.log",使Tomcat输出到Log4j管理的日志文件。ERROR、SEVERE)的日志文件,避免丢失关键故障信息。tomcat:tomcat或root)。logrotate -d测试Logrotate配置),避免误删日志。df -h、Prometheus)实时监控磁盘空间,及时发现日志膨胀问题。