ubuntu

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
}

参数说明

3. 测试logrotate配置

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

sudo logrotate -vf /etc/logrotate.d/tomcat9

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. 其他注意事项

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

0
看了该问题的人还看了