1

スーパーバイザーのログファイル機能をいじっています。プログラムは stdout に次のように書き込みます。

ruby sample.rb
>>0.9668821900023237 [tps] 
>>61.91346356232367 [tps] 
>>Heartbeat....
>>58.84168122263758 [tps] 
>>Heartbeat....

スーパーバイザーから実行すると、ログ ファイルが作成されますが、stdout_logfile常に空です。で何かを台無しにするとsample.rb、何らかの例外が発生しますが、 がstdout_logfile原因で正常に書き込まれredirect_stderrます。

スーパーバイザー構成ファイル:

[program:sample]
priority=50
command=/usr/bin/ruby sample.rb
numprocs=1
directory=/home/myapp/myapp
autorestart=true
autostart=true
startsecs=10
stopwaitsecs=90
redirect_stderr=true
stdout_logfile=/var/log/sample.out.log
user=myapp

に出力が表示されないのはなぜstdout_logfileですか?

4

1 に答える 1

1

この問題はflush、stdout を呼び出すだけで解決されます。

puts "hello world"
$stdout.flush

関連: Ruby スクリプトで stdout をリダイレクトする際の問題

于 2012-09-23T20:54:40.507 に答える