Ubuntu下如何清理Tomcat旧日志
导读:Ubuntu下清理Tomcat旧日志的常用方法 1. 手动清理(一次性操作) 步骤: 停止Tomcat服务(避免清理过程中日志写入导致文件损坏):sudo systemctl stop tomcat # 通过systemd管理的服务 #...
Ubuntu下清理Tomcat旧日志的常用方法
1. 手动清理(一次性操作)
步骤:
- 停止Tomcat服务(避免清理过程中日志写入导致文件损坏):
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
- 删除旧日志(以7天前为例,保留最近7天的
.log
文件):sudo find . -type f -name "*.log" -mtime +7 -exec rm -rf { } \; # 删除7天前的.log文件 sudo > catalina.out # 清空catalina.out(Tomcat主日志文件,无日志轮转时会无限增长)
- 重启Tomcat(恢复服务):
sudo systemctl start tomcat # 或 sudo /opt/tomcat/bin/startup.sh
注意:手动清理适用于临时解决日志满的问题,需定期执行或配合自动化工具使用。
2. 使用Logrotate自动轮转(推荐)
Logrotate是Linux系统自带的日志管理工具,可自动完成日志的切割、压缩、删除,无需手动干预。
配置步骤:
- 安装Logrotate(Ubuntu默认已安装,未安装则执行):
sudo apt-get install logrotate
- 创建Tomcat专用配置文件(
/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
),无需额外设置。
3. 编写Shell脚本自动化清理
若需要更灵活的清理逻辑(如清理特定模式的日志),可编写脚本并通过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
会自动调用脚本完成任务。
4. 调整Tomcat日志配置(从源头减少日志量)
通过修改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(自动化程度高),再配合脚本或配置调整优化日志管理。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Ubuntu下如何清理Tomcat旧日志
本文地址: https://pptw.com/jishu/721761.html