温馨提示×

debian apache日志怎么分割

小樊
39
2026-10-24 21:03:19
栏目: 智能运维

在 Debian 上,Apache 日志(通常是 access.log 和 error.log)默认不会自动按天/大小分割,常见做法有 三种:使用 logrotate(推荐)、Apache 自带的 rotatelogs、或 cronolog。下面分别说明。


一、使用 logrotate(Debian 默认推荐 ✅)

Debian 安装 Apache 后,一般已经自带了 logrotate 配置:

/etc/logrotate.d/apache2

1. 查看现有配置

cat /etc/logrotate.d/apache2

典型内容示例:

/var/log/apache2/*.log {
    daily
    missingok
    rotate 14
    compress
    delaycompress
    notifempty
    create 640 root adm
    sharedscripts
    postrotate
        if invoke-rc.d apache2 status > /dev/null 2>&1; then
            invoke-rc.d apache2 reload > /dev/null 2>&1
        fi
    endscript
}

2. 常用参数说明

  • daily:每天分割
  • weekly / monthly:按周/月
  • rotate 14:保留 14 份
  • compress:压缩旧日志
  • notifempty:空日志不分割
  • postrotate:分割后重载 Apache(必须,否则不写新文件)

3. 手动测试

logrotate -d /etc/logrotate.d/apache2   # 测试(不真正执行)
logrotate -f /etc/logrotate.d/apache2   # 强制执行

二、使用 Apache rotatelogs(按时间/大小)

适合不想用 logrotate 的场景。

1. 修改虚拟主机配置

CustomLog "|/usr/bin/rotatelogs /var/log/apache2/access_%Y%m%d.log 86400" combined
ErrorLog "|/usr/bin/rotatelogs /var/log/apache2/error_%Y%m%d.log 86400"

说明:

  • 86400 = 一天(秒)
  • 日志文件名会带日期

2. 重启 Apache

systemctl restart apache2

✅ 优点:实时分割
❌ 缺点:不会自动压缩、需手动清理


三、使用 cronolog(较少用)

apt install cronolog

配置示例:

CustomLog "|/usr/bin/cronolog /var/log/apache2/access_%Y%m%d.log" combined

四、常见问题

1. 日志不轮转?

  • 检查 logrotate 是否运行:
cat /var/lib/logrotate/status
  • 确保 postrotate 里有 reload apache2

2. 权限问题?

日志目录一般属于:

root:adm

确保 Apache 用户(www-data)有写权限


推荐方案总结

方式 推荐度 说明
logrotate ⭐⭐⭐⭐⭐ Debian 官方方式
rotatelogs ⭐⭐⭐⭐ 灵活、实时
cronolog ⭐⭐ 老旧

如果你愿意,我可以:

  • 帮你写一套 按天+压缩+保留30天 的 logrotate 配置
  • 或针对 多个虚拟主机 的日志分割方案

0 踩