最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
如何用 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.log和error.log - CentOS/RHEL:
/var/log/httpd/access_log和error_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:每天执行一次轮转;也可换为weekly或size 100M(按大小触发,优先级更高) -
rotate 7:保留最近 7 个归档(如access.log.1.gz到access.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.1或access.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 -h和df -i快速排查
相关文章
- 如何注销悦通行账号 07-15
- 《神探杰克鼠》鼩鼱告急的蛛丝马迹成就解锁指南 07-15
- 蚂蚁新村今天正确答案1.13 07-15
- 蚂蚁新村2026年1月13日答案最新 07-15
- 小鸡答题今天的答案是什么2026年1月14日 07-15
- 2026年1月14日小鸡庄园答案 07-15