最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
Apache 日志切割如何弄
时间:2026-09-02 08:28:49 编辑:袖梨 来源:一聚教程网
Apache二进制安装需用管道方式实现日志轮转,推荐rotatelogs或cronolog,避免logrotate被动处理导致丢日志;修改ErrorLog和CustomLog为管道调用,确保路径存在且有写权限,最后平滑重载配置。
Apache 二进制安装默认不切日志,得靠外部工具接管写入过程。核心思路是用管道(|)把日志输出交给轮转程序,而不是等 logrotate 被动处理——这样更及时、不丢日志、也不用重启服务。
用 Apache 自带 rotatelogs(最推荐)
它不用额外装,只要编译时启用了 mod_log_rotate(通常默认开启)。检查是否存在:
ls /usr/local/apache2/bin/rotatelogs
如果路径不同,先确认你 Apache 的安装目录;若缺失,可补装或重新编译加 --enable-log-rotate。
修改 httpd.conf 或虚拟主机配置中的日志行:
- 注释掉原来的:
ErrorLog "logs/error_log"和CustomLog "logs/access_log" combined - 替换成带管道的新写法:
ErrorLog "|/usr/local/apache2/bin/rotatelogs -l logs/error_%Y%m%d.log 86400 480"
CustomLog "|/usr/local/apache2/bin/rotatelogs -l logs/access_%Y%m%d.log 86400 480" combined
说明:
● -l 表示用本地时间(不是 GMT)
● 86400 是秒数,即每天切一次
● 480 是 UTC+8 的偏移分钟数,确保日志名和内容时间与服务器一致
● 日志目录(如 logs/)需存在,且 Apache 工作进程(如 daemon 或 www-data)有写权限
用 cronolog(轻量第三方)
适合不想依赖 Apache 模块或需要更灵活命名的场景。先安装:
# CentOS/RHEL
yum install cronolog
# Ubuntu/Debian
apt install cronolog
验证:cronolog --version
然后改配置:
CustomLog "|/usr/bin/cronolog /var/log/apache2/access_%Y%m%d.log" combined
ErrorLog "|/usr/bin/cronolog /var/log/apache2/error_%Y%m%d.log"
注意:cronolog 默认按本地时间生成文件名,无需额外时区参数;路径权限同样要检查。
关键收尾动作
- 保存配置后,执行
/usr/local/apache2/bin/apachectl configtest检查语法 - 平滑重载生效:
/usr/local/apache2/bin/apachectl graceful(不中断请求) - 手动触发一次访问,几秒后看
ls logs/是否生成带日期的新日志文件 - 留意错误日志里有没有
pipe failed或权限拒绝提示,常见于路径不存在或用户无写权
补充说明:logrotate 不是首选
它能用,但属于“事后轮转”——日志先写满再压缩归档,中间可能丢最后几秒记录,且需额外配 postrotate 发送信号重载 Apache。对二进制部署来说,不如管道方式直接可控。