在CentOS系统中,logrotate是管理Java应用程序日志轮转的标准工具,可实现日志文件的自动压缩、备份、删除及应用重启,避免日志文件过大占用磁盘空间。以下是详细配置步骤:
logrotate通常预装在CentOS系统中,若未安装,可通过以下命令安装:
sudo yum install logrotatesudo dnf install logrotate在/etc/logrotate.d/目录下创建专门的Java日志配置文件(如java_app),便于统一管理:
sudo vi /etc/logrotate.d/java_app
在配置文件中添加以下内容(根据实际环境修改日志路径、保留数量等参数):
/path/to/your/java/app/logs/*.log {  # 替换为Java应用日志的实际路径(支持通配符)
    daily                            # 轮转频率:每天(可选:weekly/monthly)
    rotate 7                         # 保留最近7个轮转日志(可根据磁盘空间调整)
    compress                         # 压缩旧日志(节省空间,默认使用gzip)
    delaycompress                    # 延迟压缩(本次轮转的新日志不压缩,下次轮转时再压缩)
    missingok                        # 若日志文件不存在,不报错继续执行
    notifempty                       # 若日志文件为空,不进行轮转
    create 640 root adm              # 轮转后创建新日志文件,权限640,属主root,属组adm
    sharedscripts                    # 所有日志处理完成后统一执行postrotate脚本(避免重复重启应用)
    postrotate
        # 以下脚本用于通知Java应用重新打开日志文件(避免日志丢失)
        if [ -f /path/to/your/java/app/logs/your_app.log.pid ]; then
            kill -USR1 `cat /path/to/your/java/app/logs/your_app.log.pid`  # 通过PID文件发送USR1信号
        elif [ -f /path/to/your/java/app/bin/your_app.pid ]; then
            kill -HUP `cat /path/to/your/java/app/bin/your_app.pid`         # 或通过PID文件发送HUP信号
        else
            killall -HUP java_app_name                                     # 或直接重启应用(需替换为实际进程名)
        fi
    endscript
}
delaycompress可避免压缩正在写入的日志。tomcat)。在正式启用前,通过以下命令强制测试配置是否正确:
sudo logrotate -d /etc/logrotate.d/java_app  # 干运行(dry run),显示轮转过程但不实际执行
sudo logrotate -f /etc/logrotate.d/java_app  # 强制立即执行轮转(验证脚本是否正常)
执行后,检查/path/to/your/java/app/logs/目录,应生成类似your_app.log.1.gz的压缩日志文件,且原日志文件被清空。
logrotate默认通过**/etc/cron.daily/logrotate**定时任务每天自动运行(无需额外配置)。可通过以下命令确认定时任务是否存在:
cat /etc/cron.daily/logrotate
若文件存在且包含/usr/sbin/logrotate /etc/logrotate.conf命令,则表示自动轮转已启用。
create指定的属主/属组与应用运行用户一致(如Tomcat应用需改为tomcat:tomcat)。postrotate脚本中的信号发送命令是否正确(如Spring Boot应用常用HUP信号,传统Java应用常用USR1信号)。/path/to/your/java/app/logs/*.log路径是否包含所有需要轮转的日志文件(如包含通配符*.log或具体文件名)。通过以上步骤,即可实现CentOS系统中Java应用程序日志的自动化轮转,有效管理日志文件大小和数量。