步骤:
sudo systemctl stop tomcat # 通过systemd管理的服务
# 或
sudo /opt/tomcat/bin/shutdown.sh # 脚本启动的Tomcat
/var/log/tomcat
或/opt/tomcat/logs
,可通过echo $CATALINA_HOME
确认CATALINA_HOME
环境变量):cd /var/log/tomcat # 或 $CATALINA_HOME/logs
.log
文件):sudo find . -type f -name "*.log" -mtime +7 -exec rm -rf {} \; # 删除7天前的.log文件
sudo > catalina.out # 清空catalina.out(Tomcat主日志文件,无日志轮转时会无限增长)
sudo systemctl start tomcat # 或 sudo /opt/tomcat/bin/startup.sh
注意:手动清理适用于临时解决日志满的问题,需定期执行或配合自动化工具使用。
Logrotate是Linux系统自带的日志管理工具,可自动完成日志的切割、压缩、删除,无需手动干预。
配置步骤:
sudo apt-get install logrotate
/etc/logrotate.d/tomcat
):sudo nano /etc/logrotate.d/tomcat
/var/log/tomcat/*.log {
daily # 每天轮转一次
rotate 7 # 保留7天的日志文件
compress # 压缩旧日志(如catalina.out.1.gz)
missingok # 日志文件不存在时不报错
notifempty # 日志为空时不轮转
create 640 tomcat tomcat # 新日志文件的权限和所有者(需与Tomcat运行用户一致)
postrotate
/bin/kill -USR1 $(cat /var/run/tomcat.pid) 2>/dev/null || true # 向Tomcat发送信号,使其重新打开日志文件
endscript
}
说明:
daily
:轮转频率(可改为weekly
/monthly
);rotate 7
:保留最近7天的日志(可根据磁盘空间调整);postrotate
:轮转后执行的命令,确保Tomcat能继续写入新日志。sudo logrotate -d /etc/logrotate.d/tomcat
sudo logrotate -f /etc/logrotate.d/tomcat
Logrotate会自动添加到系统定时任务(/etc/cron.daily/logrotate
),无需额外设置。
若需要更灵活的清理逻辑(如清理特定模式的日志),可编写脚本并通过cron
定时执行。
脚本示例(/opt/tomcat/scripts/clean_tomcat_logs.sh
):
#!/bin/bash
# 定义Tomcat日志路径
LOG_PATH="/var/log/tomcat"
# 删除7天前的.log文件
find "$LOG_PATH" -type f -name "*.log" -mtime +7 -exec rm -rf {} \;
# 清空catalina.out
> "$LOG_PATH/catalina.out"
设置权限:
sudo chmod +x /opt/tomcat/scripts/clean_tomcat_logs.sh
添加定时任务(每天凌晨0点执行):
sudo crontab -e
添加以下内容:
0 0 * * * /opt/tomcat/scripts/clean_tomcat_logs.sh
说明:脚本需赋予执行权限,cron
会自动调用脚本完成任务。
通过修改Tomcat的日志配置,可降低日志生成速率,减少旧日志的积累。
logging.properties
($CATALINA_HOME/conf/logging.properties
):# 设置日志级别为WARNING(减少INFO级别的冗余日志)
.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
($CATALINA_HOME/conf/server.xml
):AccessLogValve
配置:<!--
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="localhost_access_log" suffix=".txt"
pattern="%h %l %u %t "%r" %s %b" />
-->
注意:调整日志级别需权衡“调试便利性”与“日志体积”,建议生产环境保留WARNING
及以上级别。
以上方法可根据实际需求组合使用,推荐优先配置Logrotate(自动化程度高),再配合脚本或配置调整优化日志管理。