Logrotate:如何在 postrotate 中访问输出文件

Logrotate:如何在 postrotate 中访问输出文件

Nginx每天轮换日志(使用dateext)。轮换后,我想解析刚刚过去一天的文件,并使用 Nginx 服务器返回的错误数量编写一封电子邮件。

我如何访问 postrotate / endscript 部分中的输出文件logrotate

答案1

如果您正在寻找的话,我不知道您可以使用任何变量。但是,在旋转日志后,您应该根据为旋转设置的配置(/var/log/somefile.1或类似配置)准确地知道文件已旋转到的名称。

如果您描述您正在尝试解决的实际问题,也许回答起来会更容易?

答案2

如果您不使用“sharedscripts”指令,那么您的 postrotate 脚本将接收触发日志轮换的文件(作为 $1)。如果您尝试使用具有多个 logrotate 节的通用脚本,这可能会有所帮助。也就是说,给出如下内容:

/var/log/sample1.log /var/log/sample[23].log {
  ..config...
}

如果任何匹配的文件需要轮换,则将调用您的脚本,并将 $1 设置为“/var/log/sample1.log”、“/var/log/sample2.log”或“/var/log/sample3.log”(视情况而定)。然后,您可以附加“.1”以查找刚刚轮换的文件。

如果您使用“sharedscripts”选项,那么您的脚本将被调用,并将 $1 设置为“/var/log/sample1.log /var/log/sample[23].log”(这将帮助您识别特定的节而不是确切的文件)。

希望这能给你一个起点。请注意,这仅适用于 logrotate > v3.7.5。

相关内容