如何在 Windows 上使用 Apache logrotate 删除日志

我叫伊藤,是一名基础设施工程师。
Linux 系统上 Apache 的日志轮换设置是通过 logrotate 进行配置的。
有关日志轮换的更多信息,请参阅此处。
尝试使用日志轮换(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 logs/error_%Y%m%d.log 86400" CustomLog "|bin/rotatelogs.exe logs/access_%Y%m%d.log 86400" common
原始设置为“当日志达到 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 命令来压缩旧日志
。组合方式多种多样,不胜枚举。
如果您觉得这篇文章有用,请点击【点赞】!
2