class Loom::Logger

Constants

COLOR_MAP

Public Class Methods

configure(config) click to toggle source
# File lib/loom/logger.rb, line 14
def configure(config)
  device = configure_device config.log_device

  logger = ::Logger.new device
  class << logger
    include LoggerDebugLevels
  end
  raise "missing logger debug methods" unless logger.respond_to? :debug1

  logger.level = case config.log_level
                 when Symbol, String
                   ::Logger.const_get config.log_level.to_s.upcase
                 when Integer
                   # Negative numbers can be used for detailed debug levels
                   config.log_level
                 end

  colorize = config.log_colorize && device.tty?
  logger.formatter = default_formatter colorize

  if config.log_colorize && !device.tty?
    logger.warn "disabled log colorization for non-tty"
  end

  logger
end

Private Class Methods

configure_device(device_value) click to toggle source
# File lib/loom/logger.rb, line 42
def configure_device(device_value)
  case device_value
  when :stderr, 'stderr'
    STDERR
  when :stdout, 'stdout'
    STDOUT
  when :devnull, 'devnull'
    File.new '/dev/null', 'a'
  when Integer
    IO.new device_value, 'a'
  when String
    File.new device_value, 'a'
  when StringIO
    device_value
  else
    raise ConfigError, "log_device => #{device_value}"
  end
end
default_formatter(colorize) click to toggle source
# File lib/loom/logger.rb, line 61
def default_formatter(colorize)
  lambda do |severity, datetime, progname, msg|
    s_key = severity[0].downcase.to_sym
    if colorize && COLOR_MAP[s_key]
      severity = Styleizer.apply severity, COLOR_MAP[s_key]
      progname = Styleizer.apply progname, :bold, :dark_gray
    end

    if progname
      "[%s] (%s): %s\n" % [severity, progname, msg]
    else
      "[%s] %s\n" % [severity, msg]
    end
  end
end