一聚教程网:一个值得你收藏的教程网站

最新下载

热门教程

如何用 Logrotate 管理 Apache 日志

时间:2026-07-14 08:57:51 编辑:袖梨 来源:一聚教程网

Logrotate 管理 Apache 日志的核心是配置 /etc/logrotate.d/ 下的规则文件,按时间或大小自动切分、压缩、清理旧日志;需确认日志路径(如 Ubuntu 为 /var/log/apache2/*.log),设置 daily、rotate 7、create 644 www-data adm 及 postrotate reload,并通过 logrotate -vf 测试生效。

用 Logrotate 管理 Apache 日志,核心是配置一个规则文件,让系统自动按时间或大小切分、压缩、清理旧日志,避免磁盘被撑爆。它不依赖 Apache 自身,而是作为 Linux 系统级工具独立运行。

确认日志路径和配置位置

Apache 日志默认位置因发行版而异:

  • Ubuntu/Debian:/var/log/apache2/access.logerror.log
  • CentOS/RHEL:/var/log/httpd/access_logerror_log

Logrotate 配置通常放在 /etc/logrotate.d/ 目录下。系统一般已自带 apache2(Ubuntu)或 httpd(CentOS)配置文件,可直接修改,也可新建(如 /etc/logrotate.d/myapache)。

编写基础轮转配置

以 Ubuntu 为例,在 /etc/logrotate.d/apache2 中写入:

/var/log/apache2/*.log {    daily    missingok    rotate 7    compress    delaycompress    notifempty    create 644 www-data adm    sharedscripts    postrotate        systemctl reload apache2 > /dev/null 2>&1 || true    endscript}

关键点说明:

  • daily:每天执行一次轮转;也可换为 weeklysize 100M(按大小触发,优先级更高)
  • rotate 7:保留最近 7 个归档(如 access.log.1.gzaccess.log.7.gz
  • create 644 www-data adm:新日志文件权限设为 644,属主 www-data,属组 adm(确保 Apache 进程能继续写入)
  • postrotate ... reload:轮转后重载 Apache,让它重新打开日志文件句柄,防止日志写入丢失

测试与启用

配置完别急着等 cron,先手动验证:

  • 检查语法是否正确:sudo logrotate -d /etc/logrotate.d/apache2(-d 是 debug 模式,只模拟不执行)
  • 强制执行一次轮转:sudo logrotate -vf /etc/logrotate.d/apache2(-v 显示详情,-f 强制)
  • 查看 /var/log/apache2/ 目录,确认生成了 access.log.1access.log.1.gz,原 access.log 变为空文件

Logrotate 默认由 /etc/cron.daily/logrotate 触发,每天凌晨运行,无需额外设置定时任务。

常见问题处理

如果发现新日志没写入、旧日志没压缩或轮转没发生,重点查这几项:

  • 权限不对:确保 create 行指定的用户组(如 www-data:adm)与 Apache 进程实际运行身份一致
  • 信号未生效:postrotate 中的 reload 命令失败时不会中断轮转,建议加 || true 并检查 Apache 服务状态
  • 日志路径错误:确认 glob 模式(如 *.log)能匹配到真实文件;若用了自定义路径(如 /opt/myapp/logs/),需在配置中明确写出
  • 磁盘满或 inodes 耗尽:轮转失败时 logrotate 会报错,可用 df -hdf -i 快速排查

热门栏目