篏

[解決策]
> $stdout=MyLog.new(time=true)
>
> p [1,2,3,4,5]
> puts "This is a pen."
> raise "tako" # 標準エラー出力にされない?

示されたプログラムでは標準エラー出力がMyLogになっていないため,
raiseの内容がログファイルに出力されません。

> $stdout=MyLog.new(time=true)
の後に
$stderr=$stdout
と書けば標準エラー出力もMyLogになり, 同じログファイルに含まれるようになります。


[環境]
$ uname -a
Linux yu-Keyboard 4.4.0-78-generic #99-Ubuntu SMP Thu Apr 27 15:29:09
UTC 2017 x86_64 x86_64 x86_64 GNU/Linux
$ ruby -v
ruby 2.4.1p111 (2017-03-22 revision 58053) [x86_64-linux]


[実行結果]
$ ruby MyLog.rb
[1, 2, 3, 4, 5]
This is a pen.
MyLog.rb:35:in `<main>': tako (RuntimeError)
$ cat 20170602_215052.log
06-02 21:50:52.024 [1, 2, 3, 4, 5]
06-02 21:50:52.024 This is a pen.
06-02 21:50:52.024 MyLog.rb:35:in `<main>'06-02 21:50:52.024 : 06-02
21:50:52.024 tako06-02 21:50:52.024  (06-02 21:50:52.024
RuntimeError06-02 21:50:52.024 )