更改单个控制器的日志级别或rails中的操作

时间:2012-04-10 01:27:24

标签: ruby-on-rails actioncontroller

我们正在haproxy背后运行一个rails项目。每秒都会向应用程序发送一个keep-alive。这导致非常嘈杂的日志文件,这使得挖掘它有点痛苦,并使它们不必要地大。

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

1 个答案:

答案 0 :(得分:4)

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

步骤1:制作一些响应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

当然,根据需要调整此健康状况检查。也许您需要检查其他Request / CGI变量......

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

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

现在,您的中间件将处理运行状况检查,并且您的日志已完全被旁路。