[ruby-list:50268] STDERRをLogしたい
From:
増田悦久 <uta2ne@...>
Date:
2016-01-22 12:55:36 UTC
List:
ruby-list #50268
マスダといいます。
表題のようなことがしたくて以下のようなスクリプトを書いてみましたが
うまく動きません。(何もログされない)
よく理解せずスレッドなんて使ってみてますが、なにか根本的に間違って
いる気がします。何かご助言いただければ幸いです。
% ruby -v
ruby 2.0.0p481 (2014-05-08 revision 45883) [universal.x86_64-darwin14]
% cat logtest.rb
#!/usr/bin/env ruby
# coding: UTF-8
require 'logger'
logger = Logger.new(File.expand_path("~/Library/Logs/logtest.log"))
stderr,w = IO.pipe
STDERR.reopen(w)
t = Thread.new(stderr,logger) do |e,l|
loop do
l.warn(e.readline.chmop)
end
end
begin
1.upto(5) { |i|
puts "count up #{i}."
STDERR.puts("count up #{i}.")
sleep 1
}
ensure
t.exit
end