Comment rediriger stderr et stdout vers un fichier pour un script Ruby?
À partir de dans un script Ruby , vous pouvez rediriger stdout
et stderr
avec les IO#reopen
méthode.
# 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 quelque chose à stderr $ cat out.txt sortie normale
Remarque: la réouverture des flux standard vers/dev/null est une bonne vieille méthode pour aider un processus à devenir un démon. Par exemple:
# daemon.rb
$stdout.reopen("/dev/null", "w")
$stderr.reopen("/dev/null", "w")
def silence_stdout
$stdout = File.new( '/dev/null', 'w' )
yield
ensure
$stdout = STDOUT
end
./yourscript.rb 2>&1 > log.txt
redirigera stdout et stderr vers le même fichier.