class Bricolage::Logger

Constants

DEFAULT_ROTATION_SIZE

Public Class Methods

default() click to toggle source
# File lib/bricolage/logger.rb, line 17
def Logger.default
  @default ||= new
end
intern_severity(sev) click to toggle source
# File lib/bricolage/logger.rb, line 8
def Logger.intern_severity(sev)
  if sev.kind_of?(Integer)
    sev
  else
    SEV_LABEL.index(sev.to_s.upcase) or
        raise ParameterError, "no such log level: #{sev}"
  end
end
new(device: $stderr, rotation_period: nil, rotation_size: DEFAULT_ROTATION_SIZE) click to toggle source
Calls superclass method
# File lib/bricolage/logger.rb, line 23
def Logger.new(device: $stderr, rotation_period: nil, rotation_size: DEFAULT_ROTATION_SIZE)
  logger = super(device, (rotation_period || 0), rotation_size)
  logger.level = (device == $stderr && $stderr.tty?) ? Logger::DEBUG : Logger::INFO
  logger.formatter = -> (sev, time, prog, msg) {
    "#{time}: #{sev}: #{msg}\n"
  }
  logger
end

Public Instance Methods

elapsed_time(label, t) click to toggle source
# File lib/bricolage/logger.rb, line 50
def elapsed_time(label, t)
  info "#{label}#{pretty_interval(t)}"
end
exception(ex) click to toggle source
# File lib/bricolage/logger.rb, line 32
def exception(ex)
  buf = StringIO.new
  buf.puts "#{ex.class}: #{ex.message}"
  ex.backtrace.each do |trace|
    buf.puts "\t" + trace
  end
  error buf.string
end
with_elapsed_time(label = '') { || ... } click to toggle source
# File lib/bricolage/logger.rb, line 41
def with_elapsed_time(label = '')
  start_time = Time.now
  begin
    return yield
  ensure
    elapsed_time(label, Time.now - start_time)
  end
end

Private Instance Methods

pretty_interval(seconds) click to toggle source
# File lib/bricolage/logger.rb, line 56
def pretty_interval(seconds)
  case
  when seconds > 60 * 60
    h, secs = seconds.divmod(60 * 60)
    m, s = secs.divmod(60)
    "%d hours %d minutes" % [h, m]
  when seconds > 60
    "%d minutes %d seconds" % seconds.divmod(60)
  else
    "%.2f secs" % seconds
  end
end