logrotate是Linux系统自带的日志管理工具,可自动完成日志的分割、压缩、删除操作,无需手动干预,是最安全高效的清理方式。
sudo apt-get update && sudo apt-get install logrotate # Debian/Ubuntu
sudo yum install logrotate # CentOS/RHEL
/etc/logrotate.d/目录下创建tomcat配置文件(如tomcat),添加以下内容(根据实际情况调整路径和参数):/path/to/tomcat/logs/catalina.out {
daily # 每天轮转一次(可根据需求改为weekly/monthly)
rotate 7 # 保留最近7天的日志文件
compress # 压缩旧日志(节省磁盘空间)
missingok # 若日志文件不存在,不报错
notifempty # 若日志为空,不轮转
copytruncate # 复制原日志后清空,避免重启Tomcat(适用于无法修改代码的场景)
}
sudo logrotate -d /etc/logrotate.d/tomcat
sudo logrotate -f /etc/logrotate.d/tomcat
/etc/cron.daily/logrotate),无需额外设置。若需更灵活的清理逻辑(如同时清理多个日志文件、按大小清理),可编写Shell脚本并通过cron定时执行。
/usr/local/bin/clear_tomcat_logs.sh):#!/bin/bash
LOG_DIR="/path/to/tomcat/logs" # 替换为实际Tomcat日志路径
DAYS=30 # 保留最近30天的日志
# 删除指定天数前的日志文件(支持多种格式)
find "$LOG_DIR" -type f -name "catalina.*.log" -mtime +$DAYS -exec rm -rf {} \;
find "$LOG_DIR" -type f -name "localhost.*.log" -mtime +$DAYS -exec rm -rf {} \;
find "$LOG_DIR" -type f -name "localhost_access_log.*.txt" -mtime +$DAYS -exec rm -rf {} \;
# 清空catalina.out(避免文件过大)
> "$LOG_DIR/catalina.out"
sudo chmod +x /usr/local/bin/clear_tomcat_logs.sh
sudo crontab -e
添加以下内容:0 1 * * * /usr/local/bin/clear_tomcat_logs.sh
若磁盘空间紧张,需立即清理日志,可使用以下命令(操作前请确认日志路径正确):
sudo echo "" > /path/to/tomcat/logs/catalina.out
sudo find /path/to/tomcat/logs -type f -name "*.log" -mtime +30 -exec rm -rf {} \;
sudo find /path/to/tomcat/logs -type f -name "*.txt" -mtime +30 -exec rm -rf {} \;
注意:手动清理会直接删除文件,建议提前备份重要日志。通过修改Tomcat的日志配置文件,可降低日志输出频率和大小,减少后续清理压力。
conf/logging.properties:maxDays(日志保留天数)和日志级别(如将FINE改为INFO,减少不必要的日志):1catalina.org.apache.juli.AsyncFileHandler.level = INFO
1catalina.org.apache.juli.AsyncFileHandler.directory = ${catalina.base}/logs
1catalina.org.apache.juli.AsyncFileHandler.prefix = catalina.
1catalina.org.apache.juli.AsyncFileHandler.maxDays = 30 # 保留30天日志
conf/server.xml(可选):Access Log(访问日志),可添加rotatable="true"和maxDays属性,实现自动轮转:<Valve className="org.apache.catalina.valves.AccessLogValve"
directory="logs"
prefix="localhost_access_log."
suffix=".txt"
pattern="%h %l %u %t "%r" %s %b"
rotatable="true"
maxDays="30"/>
logrotate -d),确保配置正确。df -h命令监控磁盘空间,及时发现日志膨胀问题。通过以上方法,可高效管理Tomcat日志,避免日志文件占用过多磁盘空间,保障系统稳定运行。