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

我叫伊藤,是一名基础设施工程师。
Linux 系统上 Apache 的日志轮换设置是通过 logrotate 进行配置的。
请参阅此页面了解有关日志轮换的信息。
尝试日志轮换 (logrotate)(httpd (apache) 配置示例)| 设置和构建租赁服务器和家庭服务器的技巧
说到这里,我很好奇 Windows 上的日志轮换是如何工作的,经过一番研究,我发现
日志轮换似乎是使用“rotatelogs.exe”进行的,该程序包含在 Windows 上的 Apache 中,但似乎无法删除它们。
轮换后如何删除旧日志。
检查 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 时轮换”,因此我们
将把它改为“每 86,400 秒(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
