まつもと ゆきひろです

In message "Re: [ruby-list:42074] Re: puts,printの出力をファイルにも出力するには"
    on Fri, 21 Apr 2006 14:47:14 +0900, 岩崎 弘孝 <IH000667 / mb.taiyokogyo.co.jp> writes:

|>とてもつまらない方法ですが、ファイルに書き出した後で標準出力に書き出すというのは?
|>この方法でprint,puts,systemなどの出力がファイルに書き出されます。
|
|実際の利用はインタラクティブな処理のログのようなものなので
|最後にまとめて出力されるのは用途に向きません。
|今までは標準出力だけでよいという仕様だったのですが、
|ファイルにも出力するようにと要求があがってきました。
|
|1.8で簡単にやるのは難しそうですね。

以下のコードを実行するとそれ以降print, putsなどの出力がファ
イルと標準出力の両方に行われます。

  defout = Object.new
  defout.instance_eval{@ofile=open("/path/to/log/file", "w")}
  class <<defout
    def write(str)
      STDOUT.write(str)
      @ofile.write(str)
    end
  end
  $stdout = defout

redirectは行っていないのでsystemなど子プロセスの出力はファイ
ルには出力されません。

                                まつもと ゆきひろ /:|)