Sidekiq 2.12 を使用してバックグラウンド ジョブを実行する Rails 3.2 ベースのアプリがあります。Sidekiq ジョブは、インタラクティブな Rails アプリと同じメソッドを呼び出すことができます。Sidekiq から呼び出されたときに Sidekiq ログにログを記録し、Rails から呼び出されたときに Rails ログにログを記録するメソッドが必要です。これを行うためのクリーンな方法を探していますが、これまでのところ空になっています。
どちらの環境でも、Sidekiq::Logging.logger
との両方Rails.logger
が定義され、動作します。
- 適切なロガーを選択するために、ロギングの試行ごとにコール スタックを調べたくありません。
- Sidekiq と Rails の両方から呼び出される可能性のあるすべての関数に、関数パラメーターとしてログ オブジェクトを渡したくありません。
おそらく正しいことは、起動プロセス中にSidekiqにRailsロガーをそのロガーに置き換えてから、常にRailsロガーにログを記録させることだと思いますが、Railsロガーがセットアップされた後に実行される初期化フックが見つかりませんただし、Sidekiq ジョブが開始される前であり、Sidekiq によってのみ実行されます。
そのようなフックはありますか?もしそうなら、それについて教えてください。そうでない場合は、Sidekiq と Rails の実行環境に基づいてログ出力をきれいにリダイレクトする方法について、他の提案を提供してください。