Tomcat的日志文件默认存储在**/var/log/tomcat(系统级安装)或/opt/tomcat/logs**(自定义安装)目录中,主要包含catalina.out(主日志)、localhost_access_log.*.txt(访问日志)等文件。可通过以下命令快速定位:
sudo find / -type d -name "logs" 2>/dev/null | grep tomcat
确认路径后,后续备份操作需针对该目录执行。
使用tar命令压缩日志目录,生成带日期戳的归档文件,便于后续识别和检索:
# 定义日志路径(根据实际路径调整)和备份目录
LOG_PATH="/var/log/tomcat"
BACKUP_DIR="/backups/tomcat_logs"
DATE=$(date +%Y%m%d)
# 创建备份目录(若不存在)
sudo mkdir -p "$BACKUP_DIR"
# 压缩日志文件(排除空文件)
sudo tar -czvf "$BACKUP_DIR/tomcat_logs_$DATE.tar.gz" "$LOG_PATH" --exclude='*.gz'
此命令将$LOG_PATH下的所有日志文件(不含已压缩的.gz文件)打包为tomcat_logs_YYYYMMDD.tar.gz,存储到$BACKUP_DIR中。
通过crontab设置每日定时任务,实现日志备份自动化。编辑crontab文件:
sudo crontab -e
添加以下内容(每日凌晨2点执行备份,路径替换为实际路径):
0 2 * * * /bin/bash -c 'LOG_PATH="/var/log/tomcat"; BACKUP_DIR="/backups/tomcat_logs"; DATE=$(date +%Y%m%d); mkdir -p "$BACKUP_DIR"; tar -czvf "$BACKUP_DIR/tomcat_logs_$DATE.tar.gz" "$LOG_PATH" --exclude="*.gz"'
保存后,cron会自动每天执行该任务,无需手动干预。
logrotate是Debian系统自带的日志轮转工具,可自动完成日志的轮转、压缩、删除,避免日志文件过大占用磁盘空间。配置步骤如下:
sudo nano /etc/logrotate.d/tomcat
/var/log/tomcat/*.log {
daily # 每日轮转
rotate 7 # 保留最近7个日志文件
compress # 压缩旧日志(使用gzip)
missingok # 若日志文件不存在,不报错
notifempty # 若日志为空,不轮转
create 640 tomcat adm # 创建新日志文件,权限640,属主tomcat,属组adm
sharedscripts # 所有日志轮转完成后执行脚本
postrotate # 轮转后执行的命令(重启Tomcat以重新打开日志文件)
systemctl restart tomcat > /dev/null
endscript
}
sudo logrotate -f /etc/logrotate.d/tomcat
此配置会自动管理/var/log/tomcat下的所有.log文件,无需额外编写脚本。
恢复前需停止Tomcat服务,避免日志文件被占用导致恢复失败:
sudo systemctl stop tomcat
导航到备份文件所在目录,解压对应的日志归档文件:
# 进入备份目录(根据实际路径调整)
cd /backups/tomcat_logs
# 解压指定日期的备份文件(例如20250915.tar.gz)
sudo tar -xzvf tomcat_logs_20250915.tar.gz -C /var/log/tomcat/
解压后,/var/log/tomcat目录将恢复为备份时的状态。
检查/var/log/tomcat目录下的文件是否完整,重点确认catalina.out、localhost_access_log.*.txt等关键日志文件是否存在:
ls -lh /var/log/tomcat
若文件数量、大小与备份时一致,则说明恢复成功。
恢复完成后,启动Tomcat服务以继续记录日志:
sudo systemctl start tomcat
可通过systemctl status tomcat命令确认服务状态(显示“active (running)”即为正常)。
/backups/tomcat_logs)具有足够的写入权限(建议属主为root,属组为adm),避免备份失败。logrotate的rotate参数(如保留30天日志),或定期清理过期的备份文件(如find /backups/tomcat_logs -name "*.tar.gz" -mtime +30 -exec rm -f {} \;)。gpg工具),防止泄露。