2009-06-20 15 views
1

私はこのような関数を呼び出すrakeタスクがあります。私は、カスタムログへのログ出力をしたい、と私は本当にログの参照に私は、関数を作るたびに合格する必要がありますする必要はありませんRuby on Railsでrakeタスクにカスタムログを使用するにはどうすればよいですか?

namespace :blah do 
    task :hello_world => :environment do 
     logger.info("Hello World") 
     helloworld2 
    end 
end 

def helloworld2 
    logger.info("Hello Again, World") 
end 

をコール。私はこのどこかで(再びそれを見つけることができません)が見つかりました:

def logger 
    @@logger ||= Logger.new("#{RAILS_HOME}/log/blah.log") 
end 

をしかし、これは私のために動作しませんし、私は長い時間前にコードをつかんで、使用していないので、私はそれも何をするかわかりませんそれまでは。私はそれが何かを見るために@@@ google(@ "レールを試した")で@@を検索することはできません。この問題に関する助けは素晴らしいでしょう。私は、迅速な解決を期待しての本当に良い理由がない限り、宝石やプラグインを(インストールしていないです。

ありがとう!

答えて

0
  1. をあなたは「私のために動作しませんとはどういう意味ですか"これは同じコードを試したところで、新しいログファイルを作成してテキストを入れたものです。
  2. @@ loggerはクラス変数ですが、Railsのものではなく言語の問題です。さらなる説明で:)
  3. 「関数helloworld2」と間違って入力した可能性があります:)
+0

機能は間違いでした。多分それは経路の問題です。私は動作しないと言うとき、私は何もログファイルに書き込まれることを意味します。私は「hello world」と「logger.info(「hello world」)」を連続した行に入れています。私はputsを見ますが、ロガーではありません – Tony

+0

ああ、RAILS_HOMEの代わりにRAILS_ROOTを入れてください。 –

+0

これはまだ動作しておらず、パスは間違いありません。このEXACTコードはあなたのために働くのですか? – Tony

0

高度なレールレシピ@topfunkyのレシピ84は、カスタムロガーの定義方法を示しています。彼は(生産はこのようになります。)環境設定ファイルのいくつかのコードを持っている:RAILS_ROOT/config/environments/production.rb:私はあなたが持っているように、クラス変数を再定義するのではなく、それをテストしたい

config.logger = RAILS_DEFAULT_LOGGER = Logger.new(config.log_path)

。彼はhttp://nubyonrails.comに何かを持っているかもしれません。

+2

config.log_pathはどこで定義しますか? config.loggerはどのように定義されていますか?なぜRAILS_DEFAULT_LOGGERに設定していますか?ありがとう – Tony

2

rakeは運用モードでのログを無効にします。ログに記録する場合は開発モードで実行していることを確認してください

関連する問題