]> git.cworth.org Git - sup/blob - lib/sup/logger.rb
i guess range doesn't have a #size method
[sup] / lib / sup / logger.rb
1 module Redwood
2
3 class Logger
4   @@instance = nil
5
6   attr_reader :buf
7
8   def initialize
9     raise "only one Log can be defined" if @@instance
10     @@instance = self
11     @mode = LogMode.new
12     @respawn = true
13     @spawning = false # to prevent infinite loops!
14   end
15
16   ## must be called if you want to see anything!
17   ## once called, will respawn if killed...
18   def make_buf
19     return if @mode.buffer || !BufferManager.instantiated? || !@respawn || @spawning
20     @spawning = true
21     @mode.buffer = BufferManager.instance.spawn "<log>", @mode, :hidden => true
22     @spawning = false
23   end
24
25   def log s
26 #    $stderr.puts s
27     make_buf
28     @mode << "#{Time.now}: #{s.chomp}\n"
29     $stderr.puts "[#{Time.now}] #{s.chomp}" unless BufferManager.instantiated? && @mode.buffer
30   end
31   
32   def self.method_missing m, *a
33     @@instance = Logger.new unless @@instance
34     @@instance.send m, *a
35   end
36
37   def self.buffer
38     @@instance.buf
39   end
40 end
41
42 end