一、第一步:虚拟主机配置按天生成日志
编辑
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 计划任务(定时自动执行)
- 右键开始菜单 → 搜索 任务计划程序 打开
- 右侧 → 创建基本任务
- 名称填:
Apache日志自动清理,下一步 - 触发器:每天 → 下一步
- 设置时间:建议 凌晨 02:00 执行
- 操作:启动程序 → 下一步
- 程序或脚本:浏览选中你保存的 ClearApacheLog.bat
- 完成,勾选 打开属性
关键属性设置(必做)
- 常规 → 勾选:不管用户是否登录都要运行
- 安全选项:改成 管理员权限
- 条件 → 取消 只有计算机使用交流电源时才启动
确定保存。
四、测试是否生效
- 手动双击运行
ClearApacheLog.bat - 看日志目录,7 天前的旧日志直接被删掉
- 之后每天凌晨 2 点系统自动后台清理
五、效果总结
- Apache 虚拟主机:每天自动生成带日期日志
- 批处理:自动删除 N 天前旧日志
- 计划任务:每天定时后台执行,完全无人值守