Какой "официальный" способ поддержать Единорог на Героку и не потерять вырубку?
Мы переключились на 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
Я не люблю это. Я надеялся, что в Единорог есть что-то более элегантное.