温馨提示×

Apache访问日志如何分割

小樊
33
2026-07-13 07:06:11
栏目: 编程语言

Apache 访问日志(access log)分割常见有 3 种方式:按时间自动轮转(推荐)按大小滚动手动分割。下面按使用频率从高到低说明。


一、使用 rotatelogs(官方推荐,最常用 ✅)

Apache 自带 rotatelogs,可以按时间自动切分日志。

1️⃣ 修改 Apache 配置

编辑配置文件(常见路径):

/etc/httpd/conf/httpd.conf        # CentOS/RHEL
/etc/apache2/apache2.conf         # Ubuntu/Debian

找到或添加:

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

2️⃣ 参数说明

参数 含义
/var/log/apache2/access_log.%Y%m%d 日志文件名(按日期)
86400 每 86400 秒(1 天)切割一次
combined 日志格式

✅ 效果:

access_log.20260101
access_log.20260102

3️⃣ 重启 Apache

systemctl restart httpd
# 或
systemctl restart apache2

二、使用 logrotate(服务器运维最常用 ✅✅)

适合统一管理所有日志(Apache、Nginx、MySQL 等)。

1️⃣ 创建 logrotate 配置

vim /etc/logrotate.d/apache2

2️⃣ 示例配置

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

3️⃣ 参数说明

参数 含义
daily 每天切割
rotate 30 保留 30 天
compress 压缩旧日志
create 新建日志文件
postrotate 切割后重载 Apache

✅ 优点:

  • 不依赖 Apache 配置
  • 自动压缩、清理
  • 企业服务器首选

三、按大小切割(不常用)

CustomLog "|/usr/bin/rotatelogs /var/log/apache2/access_log 10M" combined
  • 每 10MB 生成一个新文件
  • 文件名不会自动带日期

四、手动分割(临时用)

mv access_log access_log.20260101
touch access_log
systemctl reload apache2

⚠ 不推荐长期使用


五、如何选择?

场景 推荐方式
生产服务器 ✅ logrotate
简单按天切割 ✅ rotatelogs
临时处理 手动

六、验证是否生效

ls -lh /var/log/apache2/

看到类似:

access_log.20260101
access_log.20260102

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

  • 系统版本(CentOS / Ubuntu)
  • Apache 版本
  • 想按天 / 按大小 / 保留多久

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

0