Apache 日志 HTTP 代码调度

Apache 日志 HTTP 代码调度

我希望在触发某些 HTTP 代码时通过电子邮件收到警告,因此我想根据请求 HTTP 代码在不同文件之间分发日志。这样,我可以在这些文件上放置一个观察者,然后通过电子邮件收到警告。

此外,如果 HTTP 代码位于单独的文件中,则日志文件应该更轻,因此它将提高我的日志解析器的速度。

我试图在 Apache 文档中查找信息但没有成功,看起来我必须使用SetEnvIf类似这样的内容:

SetEnvIf ??http_code?? 403 403log
CustomLog ${APACHE_LOG_DIR}/403.log vhost_combined env=403log

SetEnvIf ??http_code?? 404 404log
CustomLog ${APACHE_LOG_DIR}/404.log vhost_combined env=404log

SetEnvIf ??http_code?? 406 406log
CustomLog ${APACHE_LOG_DIR}/406.log vhost_combined env=406log

etc ...

不幸的是,“http_code”变量似乎在 Apache 中不存在

问:有没有办法根据 Apache 中的 HTTP 代码分派访问日志?

谢谢阅读。

答案1

SetEnvIf看着要求。 来自文档

SetEnvIf 指令根据请求的属性定义环境变量。

HTTP 响应代码来自回复因此不可用。

为了让日志解析器更轻松,你让 Apache 变得更难。Apache 还必须保持多个额外的文件句柄打开,从而消耗额外的资源。

如果性能是个问题,您应该在另一台主机上收集和处理日志。在那里,您可以进行各种聚合、解析、通知和任何您想要的特殊报告,而不会对您的 Web 服务器产生任何影响。

相关内容