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

Ruby on rails 更改rails中单个控制器或操作的日志级别,ruby-on-rails,actioncontroller,Ruby On Rails,Actioncontroller,我们正在haproxy背后运行rails项目。每秒向应用程序发送一个keep alive。这导致了非常嘈杂的日志文件,这使得挖掘日志文件有点困难,并且使它们变得不必要的大 我的第一个想法是更改要调试的操作的日志记录级别,但是有人建议在around_过滤器中更改日志记录级别。我对这个想法并不着迷,但它可能就是我如何实现它的。我对不同的解决方案持开放态度,但一般要求是我可以使这些操作安静下来,但如果出于任何原因需要查看它们,我可以更改日志记录级别。另一个解决方案是插入一些机架中间件,在进入Rails

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


我的第一个想法是更改要调试的操作的日志记录级别,但是有人建议在around_过滤器中更改日志记录级别。我对这个想法并不着迷,但它可能就是我如何实现它的。我对不同的解决方案持开放态度,但一般要求是我可以使这些操作安静下来,但如果出于任何原因需要查看它们,我可以更改日志记录级别。

另一个解决方案是插入一些机架中间件,在进入Rails ApplicationController生命周期之前处理保持活动检查

第1步:制作一些响应保持活动状态检查的中间件。在我的示例中,keep-alive请求是一个GET/health检查,因此它看起来像:

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之前插入此中间件:


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

另一个解决方案是在进入Rails ApplicationController生命周期之前插入一些机架中间件来处理保持活动状态检查

第1步:制作一些响应保持活动状态检查的中间件。在我的示例中,keep-alive请求是一个GET/health检查,因此它看起来像:

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之前插入此中间件:


现在,您的中间件将处理运行状况检查,您的日志已完全通过。

我看到了您的问题,但我认为过滤器选项是我眼中最简单的解决方案。使用before_过滤器提高日志级别och,使用before_过滤器重置日志级别och。其他一切看起来都很复杂…我知道log4j可以很容易地做到这一点,但是我不确定log4r是否可以做到这一点。等待其他人的建议。嗯,您可以始终使用低于默认值的日志级别,如果需要输出,只需降低默认日志级别。如果没有较低的日志级别,请尝试自己入侵系统。我看到了您的问题,但我认为过滤器选项是我眼中最简单的解决方案。使用before_过滤器提高日志级别och,使用before_过滤器重置日志级别och。其他一切看起来都很复杂…我知道log4j可以很容易地做到这一点,但是我不确定log4r是否可以做到这一点。等待其他人的建议。嗯,您可以始终使用低于默认值的日志级别,如果需要输出,只需降低默认日志级别。如果没有较低的日志级别,请尝试自己入侵系统。现在这是一个原创想法,让我用它来尝试让它工作。太好了!我得到赏金了吗现在这是一个原创的想法,让我用这个来试着让它发挥作用。太好了!我得到赏金了吗