ELBのヘルスチェックをRailsのログに出したくなくて、Rails::Rack::Logger
を継承したRackミドルウェアでenv
の中身を見てRails.logger.silence
するみたいなミドルウェアを作り、Rails::Rack::Logger
とswap
するのを試したんですが、log_tags
が効かなくなってしまいました。
class CustomRailsRackLogger < Rails::Rack::Logger
def call(env)
if ['/healthcheck'].include?(env['PATH_INFO'])
Rails.logger.silence { super }
else
super
end
end
end
Rails.configuration.middleware.swap Rails::Rack::Logger, CustomRailsRackLogger
Rails::Rack::Logger
を見てみたところ、initializerで第二引数に taggers
という引数がありました。
これが渡されてなかったから出なかったんですね。
このようにswapの際にちゃんと渡してあげるとlog_tags
が有効になります。
Rails.configuration.middleware.swap Rails::Rack::Logger, CustomRailsRackLogger, Rails.configuration.log_tags