class Purview::Loggers::Base

Constants

DEBUG_LEVEL
ERROR_LEVEL
INFO_LEVEL

Attributes

opts[R]

Public Class Methods

new(opts={}) click to toggle source
# File lib/purview/loggers/base.rb, line 4
def initialize(opts={})
  @opts = default_opts.merge(opts)
end

Public Instance Methods

debug(*args) click to toggle source
# File lib/purview/loggers/base.rb, line 8
def debug(*args)
  log(DEBUG_LEVEL, *args) if debug?
end
error(*args) click to toggle source
# File lib/purview/loggers/base.rb, line 12
def error(*args)
  log(ERROR_LEVEL, *args) if error?
end
info(*args) click to toggle source
# File lib/purview/loggers/base.rb, line 16
def info(*args)
  log(INFO_LEVEL, *args) if info?
end
with_context_logging(*args) { || ... } click to toggle source
# File lib/purview/loggers/base.rb, line 20
def with_context_logging(*args)
  debug(build_starting_message(*args))
  yield.tap { |result| debug(build_finished_message(*args)) }
end

Private Instance Methods

build_finished_message(*args) click to toggle source
# File lib/purview/loggers/base.rb, line 33
def build_finished_message(*args)
  case args.length
    when 1; "Finished #{args[0]}"
    when 2; args[-1]
    else; raise
  end
end
build_message(level, *args) click to toggle source
# File lib/purview/loggers/base.rb, line 41
def build_message(level, *args)
  message, exception = args[0..1]
  message_template(!!exception) % {
    :exception => format_exception(exception),
    :level => level,
    :message => message,
    :process_id => Process.pid,
    :timestamp => Time.now.strftime('%Y-%m-%d %H:%M:%S.%L %z'),
  }
end
build_starting_message(*args) click to toggle source
# File lib/purview/loggers/base.rb, line 52
def build_starting_message(*args)
  case args.length
    when 1; "Starting #{args[0]}"
    when 2; args[0]
    else; raise
  end
end
debug?() click to toggle source
# File lib/purview/loggers/base.rb, line 60
def debug?
  !!opts[:debug]
end
default_opts() click to toggle source
# File lib/purview/loggers/base.rb, line 64
def default_opts
  {
    :debug => true,
    :error => true,
    :info => false,
  }
end
error?() click to toggle source
# File lib/purview/loggers/base.rb, line 72
def error?
  !!opts[:error]
end
format_exception(exception) click to toggle source
# File lib/purview/loggers/base.rb, line 76
def format_exception(exception)
  exception && exception.backtrace.map { |line| "\tfrom #{line}" }.join("\n")
end
info?() click to toggle source
# File lib/purview/loggers/base.rb, line 80
def info?
  !!opts[:info]
end
log(level, *args) click to toggle source
# File lib/purview/loggers/base.rb, line 84
def log(level, *args)
  stream.puts build_message(level, *args)
end
message_template(exception) click to toggle source
# File lib/purview/loggers/base.rb, line 88
def message_template(exception)
  "%{timestamp} %{level} (%{process_id}) %{message}".tap do |result|
    result << ":\n%{exception}" if exception
  end
end
stream() click to toggle source
# File lib/purview/loggers/base.rb, line 94
def stream
  opts[:stream]
end