1

次のような関数を呼び出す 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 で @@ を検索して (+"@@" レールを試しました)、それが何をするかを確認できません。この問題に関するヘルプは素晴らしいでしょう。私は迅速な解決策を望んでおり、宝石やプラグインをインストールする必要はありません (本当に正当な理由がない限り.

ありがとう!

4

3 に答える 3

2

rake は、プロダクション モードでのロギングを無効にします。ログを記録したい場合は、開発モードで実行していることを確認してください

于 2009-10-30T05:29:13.723 に答える
0

Advanced Rails Recipes@topfunkyのRecipe84は、カスタムロガーを定義する方法を示しています。彼は環境設定ファイルにいくつかのコードを持っています(本番環境は次のようになります)RAILS_ROOT/config/environments/production.rb::

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

私はあなたが持っているようにクラス変数を再定義する代わりにそれをテストしたいと思います。彼はhttp://nubyonrails.comにもチェックするものがあるかもしれません。

于 2009-06-22T05:49:59.260 に答える