实时重定向stdout和stderr
问题描述:
我认为这是一个简单的问题,但找不到解决方案。我重定向stdout和Ruby脚本的标准错误做“放”,有时错误这样的日志文件(!):实时重定向stdout和stderr
bundle exec rake import:long_task --trace >& log/import.log &
但它似乎doen't实时刷新puts
的文件,当它得到了一个例外,它将回溯排在顶端import.log
。所以,这不是完美的调试,但它的工作原理。
如何将脚本的输出实时重定向到文件以准确查看如果我在终端中直接在不重定向的情况下直接启动它,我会看到什么?
使用:Ruby 1.9.2,Rails 3.2,FreeBSD和csh shell。
答
STDOUT.sync = true
如果你不想每次flush
答
我不知道我完全理解你的问题,但你有没有考虑过使用:
$stdout.puts "something on /dev/stdout"
$stdout.flush
$stderr.puts "something on /dev/stderr"
$stderr.flush
见IO#flush documentation了解详情。
我的错误,我想这是CSH相关。但是为什么当我们使用put端子时,会自动刷新输出? – Hartator 2012-03-13 16:42:10