温馨提示×

Ubuntu Tomcat日志轮转设置

小樊
47
2025-11-11 12:15:29
栏目: 智能运维

Ubuntu下配置Tomcat日志轮转(使用logrotate)
logrotate是Ubuntu系统自带的日志管理工具,可自动实现Tomcat日志的轮转、压缩、清理,避免日志文件无限增长占用磁盘空间。以下是详细配置步骤:

1. 安装logrotate(若未安装)

Ubuntu系统通常预装logrotate,可通过以下命令确认:

logrotate --version

若未安装,执行以下命令安装:

sudo apt update
sudo apt install logrotate

2. 创建Tomcat专用logrotate配置文件

/etc/logrotate.d/目录下创建tomcat配置文件(以Tomcat 9为例):

sudo nano /etc/logrotate.d/tomcat9

添加以下内容(根据实际路径调整):

/var/log/tomcat9/*.log {
    daily                   # 每天轮转一次(可选:hourly/weekly/monthly)
    missingok               # 日志文件丢失时不报错
    rotate 7                # 保留最近7个轮转日志
    compress                # 压缩旧日志(节省空间)
    delaycompress           # 延迟压缩(当前轮转的日志下次再压缩,避免压缩正在写入的文件)
    notifempty              # 日志为空时不轮转
    create 640 tomcat adm   # 创建新日志文件,权限640,属主tomcat,属组adm
    sharedscripts           # 多个日志文件匹配时,只执行一次postrotate脚本
    postrotate
        if [ -f /var/run/tomcat9.pid ]; then
            /usr/share/tomcat9/bin/shutdown.sh   # 重启Tomcat以释放日志文件句柄
            sleep 5
            /usr/share/tomcat9/bin/startup.sh
        fi
    endscript
}

参数说明

  • daily:轮转频率(可根据需求改为hourlyweekly等);
  • rotate 7:保留7个历史日志文件(超过则删除最旧的);
  • compress:使用gzip压缩旧日志(如catalina.out.1.gz);
  • postrotate/endscript:轮转后执行的命令,用于重启Tomcat(确保日志文件句柄释放,避免写入旧文件)。

3. 测试logrotate配置

手动触发轮转以验证配置是否正确:

sudo logrotate -vf /etc/logrotate.d/tomcat9
  • -v:显示详细执行过程;
  • -f:强制轮转(即使未到轮转时间)。
    若输出显示“rotating pattern: /var/log/tomcat9/*.log daily (7 rotations)”等字样,说明配置生效。

4. 验证自动执行

logrotate默认通过系统cron定时任务(/etc/cron.daily/logrotate)每天自动运行。可通过以下命令查看cron任务是否存在:

cat /etc/cron.daily/logrotate

若任务存在,系统会每天自动执行logrotate,无需额外配置。

5. 可选:针对catalina.out的特殊配置

若Tomcat的catalina.out日志文件未包含在上述配置中(部分Tomcat版本将日志输出到catalina.out而非.log文件),需单独添加配置:

sudo nano /etc/logrotate.d/tomcat_catalina

添加以下内容:

/usr/local/tomcat/logs/catalina.out {
    daily
    missingok
    rotate 7
    compress
    delaycompress
    notifempty
    copytruncate             # 直接截断原文件,无需重启Tomcat(适用于无法重启的场景)
}

注意copytruncate会复制原日志文件后清空内容,可能导致少量日志丢失(如复制瞬间写入的日志),建议优先使用postrotate重启Tomcat的方式。

6. 其他注意事项

  • 权限问题:确保/var/log/tomcat9/目录及日志文件的属主为tomcat(或对应的Tomcat用户),避免logrotate无法访问;
  • 日志路径:若Tomcat安装在非标准路径(如/opt/tomcat),需调整配置中的日志路径;
  • 日志大小限制:若需按文件大小轮转(而非时间),可将daily改为size 100M(当日志达到100MB时轮转)。

通过以上步骤,可实现Ubuntu下Tomcat日志的自动轮转,有效管理日志文件大小和数量。

0