Какой "официальный" способ поддержать Единорог на Героку и не потерять вырубку?

Мы переключились на Unicorn, но потеряли все записи приложений на Heroku. Я немного искал Google и узнал, что сборщик Heroku Ruby buildpack устанавливает плагин rails_log_stdout, который не играет хорошо с Unicorn. Я предполагаю, что это связано с природой Единорога, но я этого не подтвердил.

Обходные методы, такие как https://gist.github.com/jamiew/2227268, где предлагается. Они поражают меня как неудовлетворительные, потому что они не будут использовать уровни журналов, определенные в приложении Rails или любых тэгах, или переопределение форматирования регистратора и т.д. Мне это показалось немного грубым. Какой "официальный" способ сделать это правильно?

Ответ 1

Вот как я повторно создал экземпляр регистратора, чтобы не потерять уровни ведения журнала или теги loggin. Я должен был сделать это отдельно в каждом файле среды, production.rb, staging.rb (если он у вас есть) и т.д.

MyApp::Application.configure do

  # ...

  logger = Logger.new(STDOUT)
  logger = ActiveSupport::TaggedLogging.new(logger) if defined?(ActiveSupport::TaggedLogging)
  config.logger = logger
  log_level_env_override = Logger.const_get(ENV['LOG_LEVEL'].try(:upcase)) rescue nil
  config.logger.level = log_level_env_override || Logger.const_get(Rails.configuration.log_level.to_s.upcase)

  # ...

end

Я не люблю это. Я надеялся, что в Единорог есть что-то более элегантное.