如何使用 Windows Apache 日志轮转删除日志
我叫伊藤,是一名基础设施工程师。
Logrotate 用于在 Linux 上配置 Apache 日志轮转。
有关日志轮换的更多信息,请参阅此处。
尝试使用日志轮转(logrotate)(httpd(apache)配置示例) | 设置和构建租赁服务器/家庭服务器的提示
顺便,我研究了Windows中日志轮换的工作原理,发现
日志是使用Windows Apache自带的“rotatelogs.exe”进行轮换的,但似乎无法删除。
这是轮换后删除旧日志的方法。
检查 Apache 日志设置
在“httpd.conf”中配置 Apache 日志文件输出设置。
每天更改日志输出设置。
#原设置 ErrorLog "|bin/rotatelogs.exe logs/error-%Y%m%d-%H.log 10M -l" CustomLog "|bin/rotatelogs.exe logs/access-%Y%m%d- % H.log 10M -l" common #设置更改后 ErrorLog "| bin/rotatelogs.exe messages/error_%Y%m%d.log 86400" CustomLog "| bin/rotatelogs.exe logs/access_%Y%m%d .log 86400" 常见
原来的设置是“日志达到10MB时轮换”,所以
改为“每86400秒(1天)轮换”。
如果您使用的是 Linux,如果您配置了设置,logrotate 甚至会删除日志,但
如果您使用的是 Windows,则需要执行更多操作。
创建批处理文件
可以通过创建批处理文件并定期运行该批处理来删除旧的轮换文件。
forfiles /P "D:\Apache\logs" /D -7 /C "cmd /c del @file"
使用“forfiles”命令提取符合条件的文件。
每个参数的含义如下。
争论 | 解释 |
---|---|
/P | 目标路径 |
/D | 根据文件修改日期提取(-7表示7天前) |
/C | 对输出文件执行另一个命令(在本例中为 cmd 命令) |
@文件 | 提取文件的变量(@ext是代表提取文件扩展名的变量) |
通过创建这样的批处理文件并将其注册到任务计划程序中,
您可以从轮换文件中删除 x 天前的文件。
使用压缩命令(例如 7zip)而不是 del 命令来
压缩旧日志组合是无穷无尽的。
如果您觉得这篇文章有帮助,请点赞!