18

デーモンの宝石を使用してRubyでデーモンを作成しています。デーモンからの出力をログ ファイルに追加したいと考えています。putsコンソールからログ ファイルにリダイレクトする最も簡単な方法は何だろうと思っています。

4

4 に答える 4

39

STDERR と STDOUT の両方をキャプチャする必要があり、ログに頼りたくない場合は、この投稿から適応した簡単なソリューションを次に示します。

$stdout.reopen("my.log", "w")
$stdout.sync = true
$stderr.reopen($stdout)
于 2010-03-19T20:36:54.837 に答える
13

ruby logger の使用をお勧めします。puts よりも優れています。デバッグ、警告、情報、エラーなど、複数のログ レベルのオン/オフを切り替えることができます。

 logger = Logger.new(STDOUT)
 logger = Logger.new("/var/log/my-daemon.log")

ruby サービスを管理するために runit パッケージを使用します。デーモンの出力をログ ファイルにリダイレクトする svlogd があります。ロガー プロセスの実行スクリプトは次のとおりです。

#!/bin/sh
set -e

LOG=/var/log/my-daemon

test -d "$LOG" || mkdir -p -m2750 "$LOG" && chown nobody:adm "$LOG"
exec chpst -unobody svlogd -tt "$LOG"
于 2008-10-22T06:26:33.190 に答える
13

試す

$stdout = File.new( '/tmp/output', 'w' )

復元するには:

$stdout = STDOUT
于 2008-10-22T04:55:36.820 に答える
0

putsまたは、コマンドを再定義できますか? おそらく単一のファイル/クラスでのみ機能します

def puts(message)
   #write message to file
end
于 2014-03-24T18:05:00.157 に答える