首页 文章

实时重定向stdout和stderr

提问于
浏览
1

我认为这是一个简单的问题,但无法找到解决方案 . 我将rubd脚本的stdout和stderr重定向到'puts',有时将错误(!)重定向到这样的日志文件中:

bundle exec rake import:long_task --trace  >& log/import.log &

但它似乎没有实时刷新 puts 文件,当它获得异常时,它将回溯放在顶部 import.log . 所以,这不是完美的调试,但它的工作原理 .

我如何实时地将脚本的输出重定向到文件,以确切地看到如果我直接在终端中启动它而不重定向我会看到什么?

使用:Ruby 1.9.2,Rails 3.2,FreeBSD和csh shell .

2 回答

  • 0

    STDOUT.sync = true 如果你不想每次 flush

  • 6

    我不确定我完全理解你的问题,但你考虑过使用:

    $stdout.puts "something on /dev/stdout"
    $stdout.flush
    $stderr.puts "something on /dev/stderr"
    $stderr.flush
    

    有关详细信息,请参阅IO#flush documentation .

相关问题