module Stash::Sword::LogUtils

Public Class Methods

create_default_logger(io, level) click to toggle source
# File lib/stash/sword/log_utils.rb, line 49
def self.create_default_logger(io, level)
  logger = Logger.new(io, 10, 1024 * 1024)
  logger.level = level
  logger.formatter = proc do |severity, datetime, progname, msg|
    "#{datetime.to_time.utc} #{severity} -#{progname}- #{msg}\n"
  end
  logger
end

Public Instance Methods

default_logger() click to toggle source
# File lib/stash/sword/log_utils.rb, line 45
def default_logger
  LogUtils.create_default_logger($stdout, level)
end
hash_to_log_msg(hash) click to toggle source
# File lib/stash/sword/log_utils.rb, line 26
def hash_to_log_msg(hash)
  hash.map do |k, v|
    value = v.is_a?(Hash) ? v.map { |k2, v2| "\n\t#{k2}: #{v2}" }.join : v
    "#{k}: #{value}"
  end.join("\n")
end
level() click to toggle source
# File lib/stash/sword/log_utils.rb, line 33
def level
  # TODO: make this configurable
  @level ||= case ENV['RAILS_ENV'].to_s.downcase
             when 'test'
               Logger::DEBUG
             when 'development'
               Logger::INFO
             else
               Logger::WARN
             end
end
log() click to toggle source
# File lib/stash/sword/log_utils.rb, line 5
def log
  @log ||= default_logger
end
log_error(e) click to toggle source
# File lib/stash/sword/log_utils.rb, line 9
def log_error(e)
  log.error(to_log_msg(e))
end
log_hash(hash) click to toggle source
# File lib/stash/sword/log_utils.rb, line 21
def log_hash(hash)
  msg = hash_to_log_msg(hash)
  log.debug(msg)
end
to_log_msg(e) click to toggle source
# File lib/stash/sword/log_utils.rb, line 13
def to_log_msg(e)
  msg_lines = []
  append_message(msg_lines, e)
  append_response(msg_lines, e)
  append_backtrace(msg_lines, e)
  msg_lines.join("\n")
end

Private Instance Methods

append_backtrace(msg_lines, e) click to toggle source
# File lib/stash/sword/log_utils.rb, line 78
def append_backtrace(msg_lines, e)
  return unless e.respond_to?(:backtrace) && e.backtrace
  msg_lines.unshift(*e.backtrace)
end
append_message(msg_lines, e) click to toggle source
# File lib/stash/sword/log_utils.rb, line 60
def append_message(msg_lines, e)
  msg_lines << if e.respond_to?(:message) && e.message
                 "message: #{e.message}"
               else
                 e.to_s
               end
end
append_response(msg_lines, e) click to toggle source
# File lib/stash/sword/log_utils.rb, line 68
def append_response(msg_lines, e)
  return unless e.respond_to?(:response) && e.response
  response = e.response
  msg_lines.unshift(
    "code: #{response.code}",
    'headers:', hash_to_log_msg(response.headers),
    "body:\n#{response.body}"
  )
end