[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

In This Thread

Prev Next