2009-03-10 32 views
13

私のレールアプリを再起動すると、次のエラーが発生します。私は前に、別のアプリで別のサーバー上でこの問題を抱えていましたが、問題の内容や解決方法を覚えていません。Rails:ログファイルにアクセスできません

Rails Error: Unable to access log file. Please ensure that /apps/staging/releases/20090310162127/log/staging.log exists and is chmod 0666. The log level has been raised to WARN and the output directed to STDERR until the problem is fixed. 

私はUbuntuでcapistranoを使用して雑種クラスターに展開しています。

私が行うとls -l /apps/staging/releases/20090310162127/log/staging.log

結果は次のとおりです。

-rw-rw-rw- 1 me grp 51 Mar 10 16:07 /apps/staging/releases/20090310162127/log/staging.log 

ログdirは/アプリケーション/ステージング/共有/ログにlinkです。

何が起こっているのですか?

答えて

26

それは微妙なレールのバグであることが判明:例外は次の2行

logger = ActiveSupport::BufferedLogger.new(configuration.log_path) 
logger.level = ActiveSupport::BufferedLogger.const_get(configuration.log_level.to_s.upcase) 

レールに上昇させると

がログ・ファイルを見つけることができません想定しています。しかし、実際のエラーは2行目で発生しました。定数が正しくないため、NameErrorです。

config.log_level = Logger::INFO 

のRails 2.2は独自のロガーを使用し、上記の行を理解していない。その理由は、私の設定ファイル内のレガシーログレベルがあったということです。

ソリューション:

config.log_level = :info 
+0

お役立ち情報私はこの問題を自分で数回見つけたと思う。 –

+0

メーラーとロガーのコマンドを切り替えたとき、これに遭遇しました。 config.log_level =:sendmail D'oh! – wesgarrison

+0

これはありがとう、それはVirtualBoxのバグだと思っていた。 –

0

Railsはmeとして実行されていますか?そうでない場合は、どのユーザーがそれを実行していますか?そのユーザーはjailですか?ユーザーは/apps/staging/shared/logのすべてのコンポーネントとすべてのコンポーネント(/apps/staging/releases/20090310162127/log)に対してトラバース権限を持っていますか?

+0

はい、それは、 "私" といえ手段をjail'ed何も考えて実行しているんだ:行、または使用を削除します。はい、すべてのdirコンポーネントはトラバース可能です。リリース/ 20090310162127はおそらくリンク(現在と呼ばれる)を介してアクセスされます。 –

+2

@Michiel、jailedは、セキュリティの理由から、/が特別なディレクトリに再マップされることを意味します。もしあなたが「su - me」と「touch /apps/staging/releases/20090310162127/log/staging.log」をタッチすると、エラーは発生しないことを確認できますか? – vladr

+0

興味深い - 私はそれを調べるべきです。エラーメッセージは完全に間違っていましたが、ログファイルとは関係ありません。 –

関連する問題