2012-03-13 108 views
1

我認爲這是一個簡單的問題,但找不到解決方案。我重定向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。

回答

6

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

0

我不知道我完全理解你的問題,但你有沒有考慮過使用:

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

IO#flush documentation瞭解詳情。

+0

我的錯誤,我想這是CSH相關。但是爲什麼當我們使用put端子時,會自動刷新輸出? – Hartator 2012-03-13 16:42:10

相關問題