class Vx::Lib::Logger::BaseLogger

Public Instance Methods

formatter() click to toggle source
# File lib/vx/lib/logger/base_logger.rb, line 5
def formatter
  @formatter ||= ->(_,_,_,m) { m }
end
formatter=(val) click to toggle source
# File lib/vx/lib/logger/base_logger.rb, line 9
def formatter=(val) ; end
handle(message, options = {}) { |options| ... } click to toggle source
# File lib/vx/lib/logger/base_logger.rb, line 37
def handle(message, options = {})
  be = Time.now.to_f
  re = nil
  ex = nil

  begin
    re = yield options
  rescue Exception => e
    ex = e
  end

  en = Time.now.to_f
  options.merge!(duration: (en - be))

  if ex
    error message, options.merge!(exception: ex) if ex
    raise ex
  else
    info message, options
  end

  re
end
level() click to toggle source
# File lib/vx/lib/logger/base_logger.rb, line 19
def level
  @logger.level
end
level=(new_val) click to toggle source
# File lib/vx/lib/logger/base_logger.rb, line 23
def level=(new_val)
  @logger.level = new_val
end
progname() click to toggle source
# File lib/vx/lib/logger/base_logger.rb, line 11
def progname
  Lib::Logger.progname
end
progname=(val) click to toggle source
# File lib/vx/lib/logger/base_logger.rb, line 15
def progname=(val)
  # disable
end

Private Instance Methods

format_message(level, message, payload) click to toggle source
# File lib/vx/lib/logger/base_logger.rb, line 108
def format_message(level, message, payload)
  raise NotImplementedError
end
process_message(level, message = nil, fields = {}) { || ... } click to toggle source
# File lib/vx/lib/logger/base_logger.rb, line 63
def process_message(level, message = nil, fields = {})
  if block_given?
    message = yield
  end

  if fields[:exception] && fields[:exception].is_a?(Exception)
    ex = fields.delete(:exception)
    fields.merge!(
      exception:   [ex.class.to_s, ex.message].join(" - "),
      backtrace:   (ex.backtrace || []).map(&:to_s).join("\n"),
    )
  end

  payload = {
    thread_id: ::Thread.current.object_id,
  }

  if fields && fields != {}

    duration = fields.delete(:duration)
    if duration && duration.respond_to?(:to_f)
      payload.merge!(duration: duration.to_f)
    end

    payload.merge!(
      fields: sanitize_hash(fields)
    )
  end

  @logger.public_send level, format_message(level, message.to_s, payload)
end
sanitize_hash(payload) click to toggle source
# File lib/vx/lib/logger/base_logger.rb, line 95
def sanitize_hash(payload)
  payload = {} unless payload.is_a?(Hash)

  payload.keys.each do |key_name|
    value = payload[key_name]
    unless value.is_a?(String)
      payload[key_name] = value.to_s
    end
  end

  payload
end