我希望在触发某些 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 服务器产生任何影响。