一聚教程网:一个值得你收藏的教程网站

最新下载

热门教程

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 或虚拟主机配置中的日志行:

  1. 注释掉原来的:ErrorLog "logs/error_log"CustomLog "logs/access_log" combined
  2. 替换成带管道的新写法:

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 工作进程(如 daemonwww-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 默认按本地时间生成文件名,无需额外时区参数;路径权限同样要检查。

关键收尾动作

  1. 保存配置后,执行 /usr/local/apache2/bin/apachectl configtest 检查语法
  2. 平滑重载生效:/usr/local/apache2/bin/apachectl graceful(不中断请求)
  3. 手动触发一次访问,几秒后看 ls logs/ 是否生成带日期的新日志文件
  4. 留意错误日志里有没有 pipe failed 或权限拒绝提示,常见于路径不存在或用户无写权

补充说明:logrotate 不是首选

它能用,但属于“事后轮转”——日志先写满再压缩归档,中间可能丢最后几秒记录,且需额外配 postrotate 发送信号重载 Apache。对二进制部署来说,不如管道方式直接可控。

热门栏目