1

Unicorn に切り替えましたが、Heroku のすべてのアプリ ロギングが失われました。少しググってみたところ、Heroku の Ruby ビルドパックがプラグイン「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 に答える