Apache 访问日志(access log)分割常见有 3 种方式:按时间自动轮转(推荐)、按大小滚动、手动分割。下面按使用频率从高到低说明。
rotatelogs(官方推荐,最常用 ✅)Apache 自带 rotatelogs,可以按时间自动切分日志。
编辑配置文件(常见路径):
/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"
| 参数 | 含义 |
|---|---|
/var/log/apache2/access_log.%Y%m%d |
日志文件名(按日期) |
86400 |
每 86400 秒(1 天)切割一次 |
combined |
日志格式 |
✅ 效果:
access_log.20260101
access_log.20260102
systemctl restart httpd
# 或
systemctl restart apache2
logrotate(服务器运维最常用 ✅✅)适合统一管理所有日志(Apache、Nginx、MySQL 等)。
vim /etc/logrotate.d/apache2
/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
}
| 参数 | 含义 |
|---|---|
daily |
每天切割 |
rotate 30 |
保留 30 天 |
compress |
压缩旧日志 |
create |
新建日志文件 |
postrotate |
切割后重载 Apache |
✅ 优点:
CustomLog "|/usr/bin/rotatelogs /var/log/apache2/access_log 10M" combined
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
如果你愿意,可以告诉我:
我可以给你一份完全可直接用的配置。