2012-03-09 7 views
9

デモのHelloWorld Railsアプリケーションを作成し、WEBrickでテストしました(DBを使用していない、「hello world」を出力するコントローラです)。それから私はPassengerを搭載したローカルのApacheに展開しようとしました。実際、このテストはPassengerを動作させるためのテストです(これはApacheで初めてのデプロイです)。今私は旅客が働いているかどうかも分かりませんが、Apache側では何のエラーもありません。production.logにログメッセージがありません

私がhttp://rails.test/を発射すると、ブラウザはRails 500エラーページを表示します。そのため、Passengerが動作すると仮定します。 ログを調査したいのですが、production.logが空であることが起こります。ファイルを削除すると、ページをリロードすると再作成されるため、アクセス権の問題ではないと思います。私は、conf/environments/production.rbでログレベルを変更しようとした手動でのRailsコンソールの生産と

Rails.logger.error('asdf') 

それはtrue返しますが、何もproduction.logに書き込まれません取得してログファイルへの書き込みしようとしました。パス(Rails.logger.inspectで取得)は正しいです。手動で削除すると、ファイルが再作成されます。何が起こっているのか、どうすれば分かりますか?

あなたがRailsの3.2を実行していると仮定すると、

+0

私はレール4に入っていても、まだこの問題が発生しています。 – Braden

+0

Railsをアップグレードしました。これは回帰の可能性があります – Raffaele

答えて

13

(そのサーバーに記録されていない、私はすでにApacheのログを確認し、プラス私は旅客のための最高のデバッグレベルを設定するが、それはRailsの問題です)。 1、これはバグです。それはpatched in 3.2.2でした。

あなたが何らかの理由で3.2.2にアップグレードすることができない場合は、this comment on GitHub has a workaround

# config/initializers/patch_rails_production_logging.rb 
Rails.logger.instance_variable_get(:@logger).instance_variable_get(:@log_dest).sync = true if Rails.logger 
+0

奇妙なことは、Railsコンソールで 'Logger.flush'を使って遊んでいたことですが、何の効果もありませんでした。アップグレードは、私の問題を解決した – Raffaele

+0

喜んで助けた。私は、アップグレードできない人のための回避策を使って答えを更新しました。 – Brandan

+0

'未定義メソッド 'sync =' for nil:NilClass(NoMethodError)'レール付き4.1.2 – RAJ

3

これは、レール3.2.11で動作設定:

Rails.logger = activesupportの:: BufferedLogger.new (Rails.root.join( "log"、 "production.log"))

+2

こんにちは - この行をどこに追加しますか? – undefined

+0

これをconfigの初期化子に入れます。例えば、 'config/initializers/logger.rb':' if!Rails.env.development? Rails.logger = ActiveSupport :: BufferedLogger.new(Rails.root.join( "log"、 "#{Rails.env} .log")) end' 真剣に、カット貼り付けをしないで改行を取得するには改行で? Enterキーを押すと私の編集内容が保存されます。 –

関連する問題