Как перенаправить stderr и stdout в файл для сценария Ruby? - PullRequest
41 голосов
/ 11 июня 2010

Как перенаправить stderr и stdout в файл для сценария Ruby?

Ответы [ 4 ]

61 голосов
/ 11 июня 2010

С в Ruby-скрипте вы можете перенаправить stdout и stderr с помощью метода IO#reopen.

# a.rb
$stdout.reopen("out.txt", "w")
$stderr.reopen("err.txt", "w")

puts 'normal output'
warn 'something to stderr'
$ ls
a.rb
$ ruby a.rb
$ ls
a.rb    err.txt out.txt
$ cat err.txt 
something to stderr
$ cat out.txt 
normal output
13 голосов
/ 13 апреля 2011

Примечание: повторное открытие стандартных потоков в / dev / null - это старый добрый метод, помогающий процессу стать демоном. Например:

# daemon.rb
$stdout.reopen("/dev/null", "w")
$stderr.reopen("/dev/null", "w")
9 голосов
/ 30 мая 2012
def silence_stdout
  $stdout = File.new( '/dev/null', 'w' )
  yield
ensure
  $stdout = STDOUT
end
5 голосов
/ 11 июня 2010
./yourscript.rb 2>&1 > log.txt

перенаправит stdout и stderr в один и тот же файл.

...