在设置策略前,需明确以下核心参数:
catalina.out、localhost.*.log、manager.*.log、host-manager.*.log等),这些文件通常位于$CATALINA_BASE/logs目录(默认路径为/opt/tomcat/logs或/var/log/tomcat)。通过修改Tomcat的logging.properties文件(位于$CATALINA_BASE/conf目录),可调整日志级别和基础保留策略:
# 设置日志级别(INFO/DEBUG/WARN/ERROR)
handlers = 1catalina.org.apache.juli.FileHandler, 2localhost.org.apache.juli.FileHandler
# 配置catalina.out日志级别及保留
1catalina.org.apache.juli.FileHandler.level = INFO
1catalina.org.apache.juli.FileHandler.directory = ${catalina.base}/logs
1catalina.org.apache.juli.FileHandler.prefix = catalina.
# 配置localhost日志级别及保留
2localhost.org.apache.juli.FileHandler.level = INFO
2localhost.org.apache.juli.FileHandler.directory = ${catalina.base}/logs
2localhost.org.apache.juli.FileHandler.prefix = localhost.
注:此配置可控制日志的输出级别和初始存储路径,但无法实现自动轮转,需结合后续工具使用。
Logrotate是Linux系统自带的日志管理工具,可自动完成日志的轮转、压缩、清理,无需手动编写复杂脚本。
Ubuntu系统默认已安装Logrotate,若未安装可通过以下命令安装:
sudo apt-get update
sudo apt-get install logrotate
创建或编辑/etc/logrotate.d/tomcat文件,添加以下内容(以catalina.out为例):
/opt/tomcat/logs/catalina.out {
daily # 每日轮转
rotate 7 # 保留7天备份
compress # 压缩旧备份(生成.gz文件)
delaycompress # 延迟压缩(避免当天日志被立即压缩)
missingok # 若日志文件不存在也不报错
notifempty # 若日志为空则不轮转
create 640 tomcat tomcat # 创建新日志文件并设置权限(用户:tomcat,组:tomcat)
sharedscripts # 所有日志轮转完成后统一执行postrotate脚本
postrotate
/bin/systemctl reload tomcat > /dev/null 2>&1 || true # 重新加载Tomcat(避免日志写入中断)
endscript
}
若需扩展至其他日志文件(如localhost.log),可将路径修改为/opt/tomcat/logs/*.log,并调整rotate、compress等参数。
sudo logrotate -d /etc/logrotate.conf
sudo logrotate -f /etc/logrotate.conf
Logrotate默认通过系统cron任务每日自动运行(路径为/etc/cron.daily/logrotate),无需额外配置。
若需更灵活的备份逻辑(如备份至远程服务器、加密备份),可编写Shell脚本并通过cron定时执行。
新建脚本文件(如/opt/scripts/backup_tomcat_logs.sh),添加以下内容:
#!/bin/bash
# 定义路径
LOG_PATH="/opt/tomcat/logs"
BACKUP_DIR="/opt/backups/tomcat"
DATE=$(date +%Y-%m-%d)
# 创建备份目录
mkdir -p "$BACKUP_DIR"
# 备份catalina.out(复制并清空原文件)
cp "$LOG_PATH/catalina.out" "$BACKUP_DIR/catalina.$DATE.log"
> "$LOG_PATH/catalina.out" # 清空原文件
# 压缩其他日志文件
gzip "$LOG_PATH"/*.log 2>/dev/null # 忽略无.log文件的错误
# 删除超过7天的备份(保留最近7天)
find "$BACKUP_DIR" -type f -name "*.gz" -mtime +7 -exec rm -f {} \;
find "$BACKUP_DIR" -type f -name "catalina.*.log" -mtime +7 -exec rm -f {} \;
sudo chmod +x /opt/scripts/backup_tomcat_logs.sh
通过crontab -e编辑当前用户的定时任务,添加以下内容(每日凌晨2点执行):
0 2 * * * /opt/scripts/backup_tomcat_logs.sh >> /opt/scripts/backup.log 2>&1
注:>> /opt/scripts/backup.log 2>&1用于将脚本输出重定向至日志文件,便于排查问题。
/opt/backups/tomcat),确认备份文件是否按预期生成。logs目录,验证是否能正常恢复。df -h命令监控备份目录所在磁盘的剩余空间,避免因备份文件过多导致磁盘满。通过以上步骤,可在Ubuntu系统上为Tomcat建立完善的日志备份策略,确保日志数据的安全性和可管理性。