温馨提示×

apache日志ubuntu如何轮转

小樊
45
2026-10-06 12:50:39
栏目: 智能运维

在 Ubuntu 上,Apache 日志的轮转通常是通过 logrotate 来管理的。下面按“原理 + 常见配置 + 常用操作”来说明。


一、Apache 日志轮转的原理(Ubuntu 默认)

Ubuntu 中:

  • Apache 本身 不负责日志轮转
  • 由 logrotate 定时任务完成
  • 配置文件位置:
    • /etc/logrotate.d/apache2(Apache 专用)
    • 主配置:/etc/logrotate.conf

logrotate 一般每天由 cron / anacron 执行一次。


二、查看 Apache 的 logrotate 配置

cat /etc/logrotate.d/apache2

一个典型内容示例(简化):

/var/log/apache2/*.log {
    daily
    missingok
    rotate 14
    compress
    delaycompress
    notifempty
    create 640 root adm
    sharedscripts
    postrotate
        systemctl reload apache2 > /dev/null 2>&1 || true
    endscript
}

关键参数说明

  • daily:每天轮转
  • rotate 14:保留 14 个旧日志
  • compress:压缩旧日志(.gz)
  • delaycompress:延迟一轮再压缩
  • notifempty:日志为空不轮转
  • postrotate:轮转后让 Apache 重新打开日志文件

三、常用操作

1️⃣ 手动测试轮转(不真正执行)

logrotate -d /etc/logrotate.d/apache2

2️⃣ 强制立即轮转

logrotate -f /etc/logrotate.d/apache2

3️⃣ 查看 cron 是否启用

ls -l /etc/cron.daily/logrotate

四、常见问题与解决

❌ 日志不轮转

检查:

systemctl status logrotate

查看是否报错

❌ Apache 仍写旧日志

说明没 reload:

systemctl reload apache2

✅ 正确配置中 postrotate 已包含该操作


五、自定义轮转(示例)

每周轮转 + 保留 8 周

/var/log/apache2/*.log {
    weekly
    rotate 8
    compress
    missingok
    notifempty
    create 640 root adm
    sharedscripts
    postrotate
        systemctl reload apache2
    endscript
}

六、确认日志路径

Ubuntu 默认 Apache 日志目录:

/var/log/apache2/

包括:

  • access.log
  • error.log
  • other_vhosts_access.log

如果你愿意,我可以:

  • 帮你优化 logrotate 配置
  • 针对 高流量服务器做调整
  • 或排查你当前日志不轮转的具体原因

直接把你的配置或问题贴出来即可。

0 踩