Apache 虚拟主机 Windows 版 日志按天切割 + 计划任务自动清理旧日志

一、第一步:虚拟主机配置按天生成日志

编辑 httpd-vhosts.conf,给每个站点加按天切割日志
apache
<VirtualHost *:80>
    ServerName test.com
    DocumentRoot "D:/xampp/htdocs/test"

    # 错误日志 按天切割
    ErrorLog "|D:/xampp/apache/bin/rotatelogs.exe D:/xampp/apache/logs/test-error-%Y%m%d.log 86400"
    # 访问日志 按天切割
    CustomLog "|D:/xampp/apache/bin/rotatelogs.exe D:/xampp/apache/logs/test-access-%Y%m%d.log 86400" combined
</VirtualHost>
  • 86400 = 24 小时
  • 日志会自动生成:test-error-20260429.log 这种按日期命名
改完重启 Apache

二、第二步:编写自动清理批处理脚本

在任意位置新建文件,命名为 ClearApacheLog.bat
复制下面代码,不用改,直接能用
bat
@echo off
chcp 65001
:: 设置Apache日志目录
set LogPath=D:\xampp\apache\logs

:: 删除 7 天前的 .log 日志 / 想要保留15天就把 -7 改成 -15
forfiles /p %LogPath% /m *.log /d -7 /c "cmd /c del /f /q @path"

:: 如果以后有 .gz 压缩日志也一起删
forfiles /p %LogPath% /m *.gz /d -7 /c "cmd /c del /f /q @path"

echo 日志清理完成
pause

参数说明

/d -7 :只保留最近 7 天日志,7 天前自动删除

想保留 15 天:改成 /d -15


三、第三步:设置 Windows 计划任务(定时自动执行)

  1. 右键开始菜单 → 搜索 任务计划程序 打开
  2. 右侧 → 创建基本任务
  3. 名称填:Apache日志自动清理,下一步
  4. 触发器:每天 → 下一步
  5. 设置时间:建议 凌晨 02:00 执行
  6. 操作:启动程序 → 下一步
  7. 程序或脚本:浏览选中你保存的 ClearApacheLog.bat
  8. 完成,勾选 打开属性

关键属性设置(必做)

  • 常规 → 勾选:不管用户是否登录都要运行
  • 安全选项:改成 管理员权限
  • 条件 → 取消 只有计算机使用交流电源时才启动
确定保存。

四、测试是否生效

  1. 手动双击运行 ClearApacheLog.bat
  2. 看日志目录,7 天前的旧日志直接被删掉
  3. 之后每天凌晨 2 点系统自动后台清理

五、效果总结

  1. Apache 虚拟主机:每天自动生成带日期日志
  2. 批处理:自动删除 N 天前旧日志
  3. 计划任务:每天定时后台执行,完全无人值守
上一篇 华为CE交换机-配置VRRP主备备份
下一篇 北京市朝阳区经济社会调查队