2

我们正在 haproxy 后面运行一个 Rails 项目。每秒都会向应用程序发送一个保持活动状态。这会导致非常嘈杂的日志文件,这使得挖掘起来有点痛苦,并使它们变得不必要地大。

我的第一个想法是更改该操作的日志记录级别以进行调试,但其他人建议更改around_filter. 我对这个想法并不疯狂,但这可能就是我实现它的方式。我对不同的解决方案持开放态度,但一般要求是我可以让这些操作安静下来,但如果我出于任何原因需要查看它们,我可以更改日志记录级别。

4

1 回答 1

4

另一种解决方案是在进入 Rails ApplicationController 生命周期之前插入一些 Rack 中间件来处理保活检查。

步骤1:制作一些响应keep-alive检查的中间件。在我的示例中,keep-alive 请求是一个GET /health-check,所以它看起来像:

class HealthCheckMiddleware
  def initialize(app)
    @app = app
  end

  def call(env)
    if env['PATH_INFO'] == '/health-check'
      return [200, {}, ['healthy']]
    end
    @app.call(env)
  end
end

当然,根据需要调整此运行状况检查。也许您需要检查其他请求/CGI 变量...

第 2 步:确保在Rails::Rack::Logger之前插入此中间件:

config.middleware.insert_before Rails::Rack::Logger, "HealthCheckMiddleware"

现在您的中间件将处理健康检查,并且您的日志已被完全绕过。

于 2012-04-23T18:45:33.560 回答