在 Heroku 上支持独角兽而不丢失日志记录的"official"方法是什么?



我们切换到独角兽,但失去了所有的应用程序登录在Heroku。我在谷歌上搜索了一下,了解到Heroku的Ruby构建包安装了一个插件"rails_log_stdout",这与Unicorn不兼容。我的猜测是这与独角兽的分叉性质有关,但我没有证实。

各种解决方案,如https://gist.github.com/jamiew/2227268建议。这些让我感到不满意,因为它们不会使用Rails应用程序中定义的日志级别或任何标签,或日志记录器格式覆盖等。在我看来,这有点蛮横。"官方"的做法是什么?

这就是我重新实例化记录器以避免丢失日志级别或登录标记的方法。我必须在每个环境文件中分别执行此操作,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

我不喜欢这个。

最新更新