温馨提示×

如何切割debian apache日志

小樊
35
2026-09-01 08:12:19
栏目: 智能运维

在 Debian 上“切割 Apache 日志”通常指 log rotation(日志轮转/切割),防止 access.log / error.log 无限变大。Debian 下最常见、推荐的做法是使用 logrotate。下面按场景说明。


一、使用 logrotate(推荐,Debian 默认已配置)

Debian 安装 Apache 后,通常会自动生成:

/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
        systemctl reload apache2 > /dev/null 2>&1 || true
    endscript
}

2. 常用参数说明

  • daily / weekly / monthly:切割频率
  • rotate N:保留 N 个旧日志
  • compress:压缩旧日志(.gz)
  • size 100M:超过大小才切
  • notifempty:空日志不切
  • postrotate:切后让 Apache 重新打开日志

3. 手动测试 logrotate

logrotate -d /etc/logrotate.d/apache2   # 模拟
logrotate -f /etc/logrotate.d/apache2  # 强制执行

二、按大小切割(例如超过 100MB)

修改 /etc/logrotate.d/apache2

/var/log/apache2/*.log {
    size 100M
    missingok
    rotate 10
    compress
    delaycompress
    notifempty
    create 640 root adm
    sharedscripts
    postrotate
        systemctl reload apache2
    endscript
}

三、使用 Apache 自带 rotatelogs(不依赖 logrotate)

适合按时间切割,例如每小时一个文件。

1. 修改虚拟主机配置

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

2. 重启 Apache

systemctl restart apache2

优点:

  • 不依赖外部工具
  • 切割时间精确

缺点:

  • 不会自动压缩
  • 需自己写清理脚本

四、常见注意事项

  1. 必须让 Apache 重新打开日志

    • logrotate:用 reload apache2
    • rotatelogs:自动处理
  2. 权限问题

    ls -l /var/log/apache2
    

    通常属主:root:adm

  3. 确认 cron 在运行

    systemctl status cron
    

五、总结建议

场景 推荐方式
Debian 标准环境 logrotate
按大小切割 logrotate + size
按小时/天精确切割 rotatelogs
多实例/容器 rotatelogs 或自定义脚本

如果你愿意,可以告诉我:

  • Apache 版本
  • 日志路径
  • 想按「时间 / 大小」切
  • 是否用 Docker

我可以给你一份可直接用的配置

0