Ubuntu下配置Tomcat日志备份策略
在配置前需明确以下核心参数:
catalina.out、localhost.*.log、manager.*.log、host-manager.*.log等),通常位于$CATALINA_BASE/logs目录(默认路径为/opt/tomcat/logs或/var/log/tomcat);若使用Log4j2或Logback等日志框架,可直接在配置文件中设置日志轮转(无需依赖外部工具),更灵活控制日志格式和存储。
log4j2.xml):<RollingFile name="RollingFile"
fileName="${catalina.base}/logs/app.log"
filePattern="${catalina.base}/logs/app-%d{yyyy-MM-dd}-%i.log.gz">
<PatternLayout pattern="%d %p %c{1.} [%t] %m%n"/>
<Policies>
<TimeBasedTriggeringPolicy interval="1" modulate="true"/> <!-- 每日滚动 -->
<SizeBasedTriggeringPolicy size="250 MB"/> <!-- 单个文件最大250MB -->
</Policies>
<DefaultRolloverStrategy max="20"/> <!-- 最多保留20个备份 -->
</RollingFile>
logback.xml):<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${catalina.base}/logs/app.log</file>
<encoder>
<pattern>%d{yyyy-MM-dd HH:mm:ss} - %msg%n</pattern>
</encoder>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${catalina.base}/logs/app-%d{yyyy-MM-dd}.log.gz</fileNamePattern>
<maxHistory>30</maxHistory> <!-- 保留30天 -->
</rollingPolicy>
<triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
<maxFileSize>250MB</maxFileSize>
</triggeringPolicy>
</appender>
配置完成后,重启Tomcat使设置生效。通过脚本实现日志的备份、压缩和旧日志清理,提升自动化程度。
backup_tomcat_logs.sh):#!/bin/bash
# 定义路径(需替换为实际路径)
LOG_PATH="/opt/tomcat/logs"
BACKUP_DIR="/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"
# 压缩其他日志文件(.log后缀)
gzip "$LOG_PATH"/*.log 2>/dev/null
# 删除超过7天的备份文件
find "$LOG_PATH" -name "catalina.*.log" -mtime +7 -exec rm -rf {} \;
find "$LOG_PATH" -name "*.log.gz" -mtime +7 -exec rm -rf {} \;
find "$BACKUP_DIR" -name "catalina.*.log" -mtime +7 -exec rm -rf {} \;
chmod +x /path/to/backup_tomcat_logs.sh
通过Cron定时执行备份脚本,实现自动化管理。
crontab -e
0 2 * * * /path/to/backup_tomcat_logs.sh >> /path/to/backup.log 2>&1
说明:>> /path/to/backup.log 2>&1将脚本输出(包括错误信息)追加到日志文件,便于排查问题。Logrotate是Linux系统自带的日志管理工具,支持自动轮转、压缩、清理,配置简单且无需额外编写脚本。
sudo apt-get install logrotate
/etc/logrotate.d/tomcat文件):/opt/tomcat/logs/catalina.out {
daily # 每日轮转
rotate 7 # 保留7天备份
compress # 压缩旧备份(.gz格式)
delaycompress # 延迟压缩(避免当天日志未完全写入)
missingok # 若日志文件不存在也不报错
notifempty # 若日志为空则不轮转
create 640 tomcat tomcat # 创建新日志文件并设置权限(需替换为实际用户)
sharedscripts # 所有日志处理完成后执行postrotate
postrotate
/bin/systemctl reload tomcat > /dev/null 2>&1 || true
endscript
}
sudo logrotate -d /etc/logrotate.d/tomcat # 测试模式(不实际执行)
sudo logrotate -f /etc/logrotate.d/tomcat # 强制立即执行
将备份文件同步到远程服务器(如通过rsync或scp),防止本地磁盘故障导致数据丢失。
rsync -avz /backups/tomcat/ user@remote_server:/remote/backup/tomcat/
scp /backups/tomcat/*.tar.gz user@remote_server:/remote/backup/tomcat/
可将远程备份命令添加到备份脚本中,实现本地+远程双重备份。$PATH),建议在脚本中使用绝对路径(如/usr/bin/gzip代替gzip);/path/to/backup.log),确认备份是否成功,避免因脚本错误导致备份遗漏。