1

Rails 3.2.x アプリの cron ジョブを処理するために rufus-scheduler を使用しています。ルートworker.rbはフォアマン (この特定のサーバーでは実際にはアップスタート) によって起動されているため、起動時に操作する Rails コンテキストがありません。明らかに、電話をかけようとするとloggerRails.logger毎回失敗します。

私はlog4rデフォルトの Rails Logger の代わりとして使用しています。これは非常に優れていますが、この問題の適切な解決策は何だろうかと考えています。

1) 起動時にスクリプトに Rails コンテキストを与える必要がありますかrake?環境を起動するのに非常に長い時間がかかるため、時限タスクを実行するのはやり過ぎです)?また

2) log4rRails アプリケーションが使用しているのと同じ log4r.yml 構成を読み込むだけで、同じログ構造に参加する、Rails 以外の Ruby スクリプトで行うように設定する必要がありますか?

3) または、私が考えていない他のオプションはありますか?

さらに、推奨される実装で検討する必要がある例または手順のいずれかをいただければ幸いです。

参考までに、「Rails 3.0.x で Log4r を構成する方法は? 」をフォローしましたが、上記の「 Ruby アプリケーションで Log4r を適切に使用していますか? 」と統合すると、これが役立つと思います。

4

1 に答える 1

1

これはあなたが探しているものかもしれないと思います..

ワーカー自体でこれを使用し、カスタムの名前付きログ ファイルを作成します。

require 'log4r'

logger = Log4r::Logger.new('test')
logger.outputters << Log4r::Outputter.stdout
logger.outputters << Log4r::FileOutputter.new('logtest', :filename =>  'logtest.log')
logger.info('started script')

## You're actual worker methods go here

logger.info('finishing')
于 2012-08-05T23:49:46.027 に答える