Debian系统下Tomcat日志归档的常用方法
手动归档适用于临时备份或小规模日志管理,通过tar命令将日志文件压缩打包。
操作步骤:
/var/log/tomcat或/opt/tomcat/logs);tomcat_logs_20250925.tar.gz):sudo tar czvf tomcat_logs_$(date +%Y%m%d).tar.gz /path/to/tomcat/logs
/home/user/backups)。通过Shell脚本结合cron定时任务,实现定期自动备份与旧日志清理。
操作步骤:
/opt/tomcat/scripts/backup_tomcat_logs.sh),内容如下:#!/bin/bash
LOG_PATH="/opt/tomcat/logs" # 日志源目录
BACKUP_PATH="/opt/tomcat/backups" # 备份目标目录
DATE=$(date +%Y-%m-%d) # 当前日期(格式:YYYY-MM-DD)
# 备份catalina.out主日志文件
cp "$LOG_PATH/catalina.out" "$BACKUP_PATH/catalina.$DATE.out"
# 删除30天前的备份文件(保留最近30天)
find "$BACKUP_PATH" -name "catalina.*.out" -mtime +30 -exec rm -rf {} \;
chmod +x /opt/tomcat/scripts/backup_tomcat_logs.sh
cron定时任务(每天凌晨0点执行):crontab -e
添加以下内容:0 0 * * * /opt/tomcat/scripts/backup_tomcat_logs.sh
```。
logrotate是Debian系统自带的日志管理工具,可自动完成日志轮转(分割)、压缩、删除旧日志,无需手动编写脚本。
操作步骤:
/etc/logrotate.d/tomcat),内容如下:/opt/tomcat/logs/catalina.out { # 目标日志文件路径(根据实际调整)
daily # 每天轮转一次
rotate 7 # 保留最近7个备份
compress # 压缩旧备份(如.gz格式)
missingok # 日志文件不存在时不报错
notifempty # 日志为空时不轮转
copytruncate # 复制原日志后清空,避免重启Tomcat
}
sudo logrotate -d /etc/logrotate.d/tomcat
sudo logrotate -f /etc/logrotate.d/tomcat
logrotate默认通过cron每天自动运行(通常位于/etc/cron.daily/logrotate)。通过降低日志级别,减少不必要的日志输出,间接降低磁盘空间占用。
操作步骤:
logging.properties文件(位于$CATALINA_BASE/conf/目录,如/opt/tomcat/conf/logging.properties);FINE/INFO调整为WARNING,减少详细日志):org.apache.catalina.core.ContainerBase.[Catalina].[localhost].level = WARNING
org.apache.catalina.core.ContainerBase.[Catalina].[localhost].handlers = java.util.logging.ConsoleHandler
sudo systemctl restart tomcat
注意:调整日志级别可能影响问题排查,建议仅在日志量过大时使用。catalina.out、localhost_access_log.*.txt),避免误删;sudo,确保对目标目录有读写权限;/var/log或Tomcat日志目录的磁盘使用情况,避免日志占满磁盘。