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