如何在 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
加载中...
2票,平均分:1.00/12
23,208
X Facebook Hatena书签 口袋

这篇文章的作者

关于作者