logrotate 日志轮转实战|Nginx/Apache/MySQL 网站日志自动切割归档 一、前言Nginx、Apache、MySQL 运行日志持续写入长期运行单个日志文件几十 GB占用磁盘、查看日志卡顿。Linux 自带logrotate工具实现日志自动分割、压缩、按天数保留、过期删除系统自带无需额外安装配合 crontab 每日定时执行是生产日志标准化必备。二、logrotate 基础介绍配置主文件/etc/logrotate.conf全局默认配置自定义规则目录/etc/logrotate.d/所有应用单独配置文件推荐定时任务系统默认每日 crontab 自动调用/etc/cron.daily/logrotate查看是否安装rpm -qa |grep logrotateCentOS 默认预装三、常用轮转配置参数释义参数作用daily按天切割weekly 周monthly 月rotate 7保留 7 份历史日志超出自动删除compressgzip 压缩归档旧日志delaycompress本次分割不压缩下一轮再压缩missingok日志不存在不报错create 0644 root root新建日志权限、属主postrotate/endscript轮转后执行脚本重载 Nginx 重新生成日志文件四、实战 1Nginx 日志轮转配置新建配置文件/etc/logrotate.d/nginx/var/log/nginx/*.log { daily rotate 30 compress missingok create 0644 nginx nginx postrotate /usr/bin/systemctl reload nginx /dev/null 21 endscript }作用每日切割 Nginx 所有日志保留 30 天、压缩归档切割后重载 nginx重新生成新 access.log五、实战 2Apache (httpd) 日志切割新建/etc/logrotate.d/httpd/var/log/httpd/*.log { daily rotate 15 compress missingok create 0644 apache apache postrotate systemctl reload httpd /dev/null 21 endscript }六、手动测试配置关键上线前校验bash运行# 模拟执行一次轮转调试配置是否报错 logrotate -d /etc/logrotate.d/nginx # 强制立即执行切割 logrotate -vf /etc/logrotate.d/nginx七、自定义目录日志项目业务日志举例比如项目日志路径/data/project/log/*.log新建/etc/logrotate.d/business/data/project/log/*.log { weekly rotate 8 compress missingok create 0644 root root }八、全局配置简要说明/etc/logrotate.confweekly #默认周切割 rotate 4 #默认保留4个备份 create #自动新建日志 include /etc/logrotate.d #加载自定义配置目录九、生产规范 避坑服务类日志 (Nginx/Apache) 轮转后必须重载服务否则进程继续写入旧日志文件配置写完先用logrotate -d调试避免语法错误导致不切割保留天数根据磁盘容量调整网站量大可改为保留 7~15 天切割后的日志命名access.log-20260605.gz带日期 压缩。