1

我们切换到 Unicorn,但在 Heroku 上丢失了所有应用程序登录。我用谷歌搜索了一下,了解到 Heroku 的 Ruby buildpack 安装了一个插件“rails_log_stdout”,它不能很好地与 Unicorn 配合使用。我的猜测是这与 Unicorn 的分叉性质有关,但我没有证实这一点。

各种解决方法,如建议的https://gist.github.com/jamiew/2227268。这些让我感到不满意,因为它们不会使用 Rails 应用程序中定义的日志级别或任何标签,或记录器格式覆盖等。这对我来说似乎有点暴力。正确执行此操作的“官方”方式是什么?

4

1 回答 1

1

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

我不喜欢这个。我希望独角兽能有更优雅的东西。

于 2013-06-26T00:55:52.880 回答