Apache二进制安装默认不切割日志,需用rotatelogs或cronolog配置管道日志实现按天切分;确认rotatelogs路径后,在httpd.conf中替换ErrorLog和CustomLog为管道指令,加-l参数确保本地时区,设86400秒滚动周期,检查语法并平滑重载生效。

确认 rotatelogs 是否可用
Apache 源码编译安装后,rotatelogs 通常已内置在 bin/ 目录下,无需额外安装:
- 执行
ls /usr/local/apache/bin/rotatelogs确认存在 - 若无,检查编译时是否启用了
--enable-rewrite和--enable-so(rotatelogs 属于 core modules,一般默认启用) - 也可用
which rotatelogs或find /usr/local/apache -name rotatelogs 2>/dev/null查找实际路径
修改 httpd.conf 配置管道日志
编辑主配置文件(通常是 /usr/local/apache/conf/httpd.conf),替换原始日志指令:
Apache Superset 是一个广泛采用的开源 BI 平台,用于 SQL 探索、图表构建和仪表板交付。当代理需要查询仓库数据、组装仪表板或使用成熟的分析界面解释指标而不是临时笔记本代码时,此技能非常有用。
- 注释掉原日志行:
#ErrorLog "logs/error_log"#CustomLog "logs/access_log" combined - 添加管道日志(以按天切割为例):
ErrorLog "|/usr/local/apache/bin/rotatelogs -l /usr/local/apache/logs/error_%Y%m%d.log 86400"CustomLog "|/usr/local/apache/bin/rotatelogs -l /usr/local/apache/logs/access_%Y%m%d.log 86400" combined - -l 参数必须加:使用本地时间而非 UTC,避免日志时间比实际晚 8 小时
-
86400单位为秒,即每天滚动一次;目录/usr/local/apache/logs/需存在且 Apache 进程用户(如daemon或www-data)有写权限
验证与启动
保存配置后执行以下步骤确保生效:
- 语法检查:
/usr/local/apache/bin/apachectl configtest(返回Syntax OK才继续) - 平滑重载:
/usr/local/apache/bin/apachectl graceful(不中断连接) - 立即观察:
ls -l /usr/local/apache/logs/应出现类似access_20260721.log的新文件 - 触发访问后检查文件是否有日志内容:
tail -f /usr/local/apache/logs/access_$(date +%Y%m%d).log
补充说明:cronolog 方案(可选)
若偏好 cronolog(需自行编译安装):
- 安装后确认路径,如
/usr/local/sbin/cronolog - 配置改为:
CustomLog "|/usr/local/sbin/cronolog /usr/local/apache/logs/access_%Y%m%d.log" combined - 注意:cronolog 不支持 offset 参数,时区由系统 locale 决定;而 rotatelogs 的
-l更可控

















