module SubZero::Loggable

Constants

COLORS
SEVERITIES
SEVERITY_COLORS

Public Class Methods

included(base) click to toggle source
# File lib/sub_zero/loggable.rb, line 31
def self.included(base)
  base.extend self
end

Public Instance Methods

error(exception, message) click to toggle source
Calls superclass method
# File lib/sub_zero/loggable.rb, line 19
def error exception, message
  super message, error: exception
end
log(message, context = {}) click to toggle source
# File lib/sub_zero/loggable.rb, line 23
def log message, context = {}
  sender_class = self.kind_of?(Class) ? self : self.class
  context.merge! sender_class: sender_class.to_s
  context[:severity] ||= :info

  puts log_colored_message(message, context)
end

Private Instance Methods

log_colored_message(message, context) click to toggle source
# File lib/sub_zero/loggable.rb, line 37
def log_colored_message(message, context)
  msg = log_colored_severity(context[:severity])
  msg << " #{Time.now.strftime('%Y%m%d%H%M%S%L')}"

  if sender_class = context.delete(:sender_class)
    msg = log_colored_term(sender_class)
  end

  msg << " #{message}"
end
log_colored_severity(severity) click to toggle source
# File lib/sub_zero/loggable.rb, line 48
def log_colored_severity(severity)
  severity.to_s.colorize SEVERITY_COLORS[severity.to_sym]
end
log_colored_term(term) click to toggle source
# File lib/sub_zero/loggable.rb, line 52
def log_colored_term(term)
  index = Integer("0x#{Digest::MD5.hexdigest(term)[0, 2]}") % 12
  term.colorize COLORS[index]
end