[ruby-list:50532] Re: [質問] raise によるメッセージをログファイルに出力するには?
From:
Sanagi Yu <y.sanagi@...>
Date:
2017-06-02 12:57:54 UTC
List:
ruby-list #50532
佐柳と申します。 [解決策] > $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 )