通过tar命令直接打包Tomcat日志目录(默认路径为/var/log/tomcat或$CATALINA_HOME/logs),生成压缩文件并存储到安全位置。操作步骤如下:
sudo systemctl stop tomcat;sudo tar -czvf /backup/tomcat_logs_$(date +%Y%m%d).tar.gz /var/log/tomcat($(date +%Y%m%d)用于生成带日期的文件名,便于区分);sudo systemctl start tomcat。logrotate是Linux系统自带的日志管理工具,可自动切割、压缩、删除旧日志,避免日志文件过大占用磁盘空间。配置步骤如下:
/etc/logrotate.d/tomcat),添加以下规则:/var/log/tomcat/*.log {
daily # 每天轮转
rotate 7 # 保留最近7天的日志
compress # 压缩旧日志(如gzip)
missingok # 若日志文件不存在也不报错
notifempty # 若日志为空则不轮转
create 0644 root root # 创建新日志文件并设置权限
dateext # 使用日期作为轮转文件的后缀(如catalina.out-20251017)
sharedscripts # 所有日志轮转完成后统一执行postrotate脚本
postrotate
/bin/kill -HUP $(cat /var/run/tomcat.pid 2>/dev/null) 2>/dev/null || true # 通知Tomcat重新打开日志文件
endscript
}
sudo logrotate -f /etc/logrotate.d/tomcat(强制立即执行轮转)。通过编写Shell脚本实现更灵活的日志备份(如同时备份多个日志文件、上传到远程存储),并结合cron定时执行。示例脚本(/usr/local/bin/tomcat_log_backup.sh):
#!/bin/bash
# 定义变量
LOG_DIR="/var/log/tomcat"
BACKUP_DIR="/backup/tomcat_logs"
DATE=$(date +%Y%m%d_%H%M%S)
# 创建备份目录(若不存在)
mkdir -p $BACKUP_DIR
# 停止Tomcat(可选,根据需求调整)
sudo systemctl stop tomcat
# 备份所有日志文件(包括catalina.out、access_log等)
tar -czvf $BACKUP_DIR/tomcat_logs_$DATE.tar.gz $LOG_DIR/*.log $LOG_DIR/catalina.out
# 删除超过30天的旧备份(可选)
find $BACKUP_DIR -name "tomcat_logs_*.tar.gz" -mtime +30 -exec rm -f {} \;
# 启动Tomcat(可选)
sudo systemctl start tomcat
sudo chmod +x /usr/local/bin/tomcat_log_backup.sh;crontab -e,添加行:0 2 * * * /usr/local/bin/tomcat_log_backup.sh。Tomcat的catalina.out日志文件会持续增长(默认无轮转),需通过脚本定期分割。示例脚本(/usr/local/bin/split_catalina_out.sh):
#!/bin/bash
LOG_DIR="/var/log/tomcat"
BACKUP_DIR="/backup/tomcat_logs"
DATE=$(date +%Y-%m-%d)
# 备份并清空catalina.out
cp $LOG_DIR/catalina.out $BACKUP_DIR/catalina.$DATE.bak
> $LOG_DIR/catalina.out # 清空原文件
# 可选:将备份文件压缩
tar -czvf $BACKUP_DIR/catalina.$DATE.tar.gz $BACKUP_DIR/catalina.$DATE.bak
rm -f $BACKUP_DIR/catalina.$DATE.bak # 删除未压缩的备份(节省空间)
sudo chmod +x /usr/local/bin/split_catalina_out.sh;crontab -e,添加行:*/2 * * * * /usr/local/bin/split_catalina_out.sh。catalina.out无限增长的问题,适合需要频繁分割日志的场景。