山口と申します。

実行時の出力結果を表示させながら、その出力結果をログファイルに出力するよ
うにしているのですが、
raise に関しては、ログファイルに出力されないので、どのようにすればよいか
ご教示いただけますでしょうか?

[環境]
yama@JPC20316739:/tmp$ uname -a
CYGWIN_NT-6.1 JPC20316739 2.8.0(0.309/5/3) 2017-04-01 20:47 x86_64 
Cygwin
yama@JPC20316739:/tmp$ Ruby --version
ruby 2.3.3p222 (2016-11-21 revision 56859) [x86_64-cygwin]

[サンプルスクリプト]
https://oshiete.goo.ne.jp/qa/8729083.html を参考に下記の様に記述

yama@JPC20316739:/tmp$ cat MyLog.rb
#! /usr/bin/env ruby
# coding: utf-8


class MyLog < IO
 def initialize(time=nil)
   @time = time # if time is true, puts the time information on each log 
line
   file=Time.new.strftime("%Y%m%d_%H%M%S.log")
   @f = File.open(file,"w")
   super(1,"w")
 end

 def close
   @f.close
   super
 end

 def write(str)

   # str != "\n": str comes twice, first is line w/o "\n", second is "\n
" in each line
   # without condition str != "\n", puts out like this 06-02 05:27:32.
461 str 06-02 05:27:32.461
   if @time && str != "\n" then
     time = Time.new.strftime("%m-%d %H:%M:%S.%L ")
     @f.write(time)
   end
   @f.write(str)
   super
 end
end

# usage this class
$stdout=MyLog.new(time=true)

p [1,2,3,4,5]
puts "This is a pen."
raise "tako" # 標準エラー出力にされない?

[実行結果]
yama@JPC20316739:/tmp$ ./MyLog.rb
[1, 2, 3, 4, 5]
This is a pen.
./MyLog.rb:37:in `<main>': tako (RuntimeError)
yama@JPC20316739:/tmp$ cat 20170602_180058.log
06-02 18:00:58.741 [1, 2, 3, 4, 5]
06-02 18:00:58.741 This is a pen.

[質問事項]
スクリプトの raise “tako” が ログファイルに出力されない。