Apache 虚拟主机 日志按文件大小切割 + 自动清理旧日志(Windows XAMPP 版)

一、原理

用 Apache 自带 rotatelogs.exe不按时间、按文件大小切割:

单个日志到指定大小,自动新建一个日志文件,再配合 Windows 计划任务自动删老旧大日志

二、rotatelogs 按大小语法

plaintext
rotatelogs.exe 日志路径 大小(字节)
换算:
  • 10MB = 10485760 字节
  • 20MB = 20971520 字节
  • 50MB = 52428800 字节

三、虚拟主机配置:按大小切割日志

编辑 httpd-vhosts.conf

示例:单个日志到 10MB 自动切割

apache
<VirtualHost *:80>
    ServerName test.com
    DocumentRoot "D:/xampp/htdocs/test"

    # 错误日志:超过10MB自动切分
    ErrorLog "|D:/xampp/apache/bin/rotatelogs.exe D:/xampp/apache/logs/test-error-%Y%m%d%H%M.log 10485760"
    # 访问日志:超过10MB自动切分
    CustomLog "|D:/xampp/apache/bin/rotatelogs.exe D:/xampp/apache/logs/test-access-%Y%m%d%H%M.log 10485760" combined
</VirtualHost>
  • 日志名带时分秒 %Y%m%d%H%M,防止同大小覆盖
  • 日志一到 10MB 自动新建一个,不会撑爆硬盘
改完配置 重启 Apache

四、批处理:自动删除 N 天前切割出来的旧日志

新建 ClearApacheLog_Size.bat
bat
@echo off
chcp 65001
set LogDir=D:\xampp\apache\logs

:: 删除30天前所有 .log 日志
forfiles /p %LogDir% /m *.log /d -30 /c "cmd /c del /f /q @path"
  • /d -30 保留最近 30 天,更早的自动清理
  • 改成 -15 就是保留 15 天

五、设置 Windows 计划任务

  1. 打开 任务计划程序
  2. 创建基本任务
  3. 名称:Apache 日志按大小自动清理
  4. 触发器:每天 凌晨 2:00
  5. 操作:启动程序 → 选中上面的 .bat
  6. 属性勾选:
    • 不管用户是否登录都运行
    • 以管理员身份运行

六、常用大小直接套用

直接替换数字即可:
  • 10MB:10485760
  • 20MB:20971520
  • 50MB:52428800

七、整体效果

  1. 日志写到指定大小就自动分割,不会单个日志几十 GB
  2. 按日期时间命名,不会覆盖
  3. 计划任务每天自动删除老旧日志,无需手动维护
上一篇 Ubuntu下安装WPS
下一篇 dpkg-deb: 错误: 粘贴 子进程被信号(断开的管道) 终止了