class Redwood::Logger

simple centralized logger. outputs to multiple sinks by calling << on them. also keeps a record of all messages, so that adding a new sink will send all previous messages to it by default.

Constants

LEVELS

Public Class Methods

new(level=nil) click to toggle source
# File lib/sup/logger.rb, line 15
def initialize level=nil
  level ||= ENV["SUP_LOG_LEVEL"] || "info"
  self.level = level
  @mutex = Mutex.new
  @buf = StringIO.new
  @sinks = []
end

Public Instance Methods

add_sink(s, copy_current=true) click to toggle source
# File lib/sup/logger.rb, line 26
def add_sink s, copy_current=true
  @mutex.synchronize do
    @sinks << s
    s << @buf.string if copy_current
  end
end
clear!() click to toggle source
# File lib/sup/logger.rb, line 35
def clear!; @mutex.synchronize { @buf = StringIO.new } end
force_message(m;) click to toggle source

send a message regardless of the current logging level

# File lib/sup/logger.rb, line 46
def force_message m; send_message format_message(nil, Time.now, m) end
level() click to toggle source
# File lib/sup/logger.rb, line 23
def level; LEVELS[@level] end
level=(level) click to toggle source
# File lib/sup/logger.rb, line 24
def level=(level); @level = LEVELS.index(level) || raise(ArgumentError, "invalid log level #{level.inspect}: should be one of #{LEVELS * ', '}"); end
remove_all_sinks!() click to toggle source
# File lib/sup/logger.rb, line 34
def remove_all_sinks!; @mutex.synchronize { @sinks.clear } end
remove_sink(s;) click to toggle source
# File lib/sup/logger.rb, line 33
def remove_sink s; @mutex.synchronize { @sinks.delete s } end