QA@IT

`daemons`をもちいてDaemon化したRubyのエラーを取得する方法

3581 PV

デーモン化しておきたい処理があったのでこんな風な処理を行いました。

# my_job.rb
class MyJob
  def run
    # 無限ループ
  end
end
# my_job_run.rb
require_relative 'my_job'
j = MyJob.new
j.run
# my_job_daemon.rb
require 'daemons'
Daemons.run 'my_job_run.rb'

そして ruby my_job_daemon.rb startで起動させています。
この時にmy_jobの中で必要な gem のインストールを忘れていて動作しなかったのですが
daemon として起動しようとしてると標準出力にはStaring...としか表示されないため
原因特定に少し手間取ってしまいました。

daemonsを使いデーモン化して立ち上げる時に
エラーを標準出力に吐き出すにはどうすればよいでしょうか?

回答

標準エラーではありませんが

my_job_daemon.rb

options = {
  :log_output => true,
  :backtrace => true
}

Daemons.run 'my_job_run.rb', options

と、オプションで例外などをファイルに出力させるのではダメですか?

あとは自前でloggerで標準エラーに出すという方法もあるかもしれませんね。
daemonsの挙動のために、loggerを生成するタイミングは気をつけないといけないようですが。

編集 履歴 (0)
  • こんなふうに設定ができたんですね。できれば標準エラーの方が良かったのですが当座の目的にはファイル出力があれば十分なのでこちらを使うことにします。ありがとうございました。 -
ウォッチ

この質問への回答やコメントをメールでお知らせします。