class Prefab::LoggerClient

Constants

BASE
SEP

Public Class Methods

new(logdev, formatter: nil) click to toggle source
Calls superclass method
# File lib/prefab/logger_client.rb, line 7
def initialize(logdev, formatter: nil)
  super(logdev)
  self.formatter= formatter
  @config_client = BootstrappingConfigClient.new
  @silences = Concurrent::Map.new(:initial_capacity => 2)
end

Public Instance Methods

add(severity, message = nil, progname = nil) click to toggle source
# File lib/prefab/logger_client.rb, line 14
def add(severity, message = nil, progname = nil)
  loc = caller_locations(1, 1)[0]
  add_internal(severity, message, progname, loc)
end
add_internal(severity, message = nil, progname = nil, loc, &block) click to toggle source
# File lib/prefab/logger_client.rb, line 19
def add_internal(severity, message = nil, progname = nil, loc, &block)
  path = get_path(loc.absolute_path, loc.base_label)
  log_internal(message, path, progname, severity, &block)
end
debug(progname = nil, &block) click to toggle source
# File lib/prefab/logger_client.rb, line 47
def debug(progname = nil, &block)
  add_internal(DEBUG, nil, progname, caller_locations(1, 1)[0], &block)
end
debug?() click to toggle source
# File lib/prefab/logger_client.rb, line 67
def debug?
  true;
end
error(progname = nil, &block) click to toggle source
# File lib/prefab/logger_client.rb, line 59
def error(progname = nil, &block)
  add_internal(ERROR, nil, progname, caller_locations(1, 1)[0], &block)
end
error?() click to toggle source
# File lib/prefab/logger_client.rb, line 79
def error?
  true;
end
fatal(progname = nil, &block) click to toggle source
# File lib/prefab/logger_client.rb, line 63
def fatal(progname = nil, &block)
  add_internal(FATAL, nil, progname, caller_locations(1, 1)[0], &block)
end
fatal?() click to toggle source
# File lib/prefab/logger_client.rb, line 83
def fatal?
  true;
end
info(progname = nil, &block) click to toggle source
# File lib/prefab/logger_client.rb, line 51
def info(progname = nil, &block)
  add_internal(INFO, nil, progname, caller_locations(1, 1)[0], &block)
end
info?() click to toggle source
# File lib/prefab/logger_client.rb, line 71
def info?
  true;
end
level() click to toggle source
# File lib/prefab/logger_client.rb, line 87
def level
  DEBUG
end
local_log_id() click to toggle source
# File lib/prefab/logger_client.rb, line 95
def local_log_id
  Thread.current.__id__
end
log_internal(message, path, progname, severity) { || ... } click to toggle source
# File lib/prefab/logger_client.rb, line 24
def log_internal(message, path, progname, severity, &block)
  level = level_of(path)
  progname = "#{path}: #{progname}"
  severity ||= UNKNOWN
  if @logdev.nil? || severity < level || @silences[local_log_id]
    return true
  end
  if progname.nil?
    progname = @progname
  end
  if message.nil?
    if block_given?
      message = yield
    else
      message = progname
      progname = @progname
    end
  end
  @logdev.write(
    format_message(format_severity(severity), Time.now, progname, message))
  true
end
set_config_client(config_client) click to toggle source
# File lib/prefab/logger_client.rb, line 91
def set_config_client(config_client)
  @config_client = config_client
end
silence() { |self| ... } click to toggle source
# File lib/prefab/logger_client.rb, line 99
def silence
  @silences[local_log_id] = true
  yield self
ensure
  @silences[local_log_id] = false
end
warn(progname = nil, &block) click to toggle source
# File lib/prefab/logger_client.rb, line 55
def warn(progname = nil, &block)
  add_internal(WARN, nil, progname, caller_locations(1, 1)[0], &block)
end
warn?() click to toggle source
# File lib/prefab/logger_client.rb, line 75
def warn?
  true;
end

Private Instance Methods

get_path(absolute_path, base_label) click to toggle source

sanitize & clean the path of the caller so the key looks like log_level.app.models.user

# File lib/prefab/logger_client.rb, line 124
def get_path(absolute_path, base_label)
  path = absolute_path + ""
  path.slice! Dir.pwd

  path.gsub!(/.*?(?=\/lib\/)/im, "")

  path = "#{path.gsub("/", SEP).gsub(".rb", "")}#{SEP}#{base_label}"
  path.slice! ".lib"
  path.slice! SEP
  path
end
level_of(path) click to toggle source

Find the closest match to 'log_level.path' in config

# File lib/prefab/logger_client.rb, line 109
def level_of(path)
  closest_log_level_match = @config_client.get(BASE) || :warn
  path.split(SEP).inject([BASE]) do |memo, n|
    memo << n
    val = @config_client.get(memo.join(SEP))
    unless val.nil?
      closest_log_level_match = val
    end
    memo
  end
  val(closest_log_level_match)
end
val(level) click to toggle source
# File lib/prefab/logger_client.rb, line 136
def val level
  return Object.const_get("Logger::#{level.upcase}")
end