class InjectedLogger::Logger

Constants

LOGLEVELS
UNKNOWN

Attributes

after_hook[RW]
fallback[R]
level_info[RW]
levels[R]
logger[RW]
prefix[R]

Public Instance Methods

add_levels(*levels) click to toggle source
# File lib/injectedlogger/logger.rb, line 72
def add_levels(*levels)
  lvls = self.levels + levels
  lvls.uniq!
  self.levels = lvls
end
fallback=(level) click to toggle source
# File lib/injectedlogger/logger.rb, line 78
def fallback=(level)
  set_fallback level
  add_methods
end
inject(logger_obj, levels: LOGLEVELS, fallback: UNKNOWN, prefix: nil) click to toggle source
# File lib/injectedlogger/logger.rb, line 44
def inject(logger_obj, levels: LOGLEVELS, fallback: UNKNOWN, prefix: nil)
  if logger and logger != logger_obj
    raise InUse, "#{self} was already using logger #{logger}"
  end
  inject! logger_obj, levels: levels, fallback: fallback, prefix: prefix
end
inject!(logger_obj, levels: LOGLEVELS, fallback: UNKNOWN, prefix: nil) click to toggle source
# File lib/injectedlogger/logger.rb, line 51
def inject!(logger_obj, levels: LOGLEVELS, fallback: UNKNOWN, prefix: nil)
  # allow injecting ourselves without stacking delegators
  logger_obj = logger_obj.send :logger if logger_obj.is_a? self.class
  self.logger = logger_obj
  set_prefix prefix
  set_levels levels
  set_fallback fallback
  add_methods
  self
end
injected?() click to toggle source
# File lib/injectedlogger/logger.rb, line 40
def injected?
  not logger.nil?
end
levels=(levels) click to toggle source
# File lib/injectedlogger/logger.rb, line 67
def levels=(levels)
  set_levels(levels)
  add_methods
end
method_missing(method, *args, &blk) click to toggle source
Calls superclass method
# File lib/injectedlogger/logger.rb, line 83
def method_missing(method, *args, &blk)
  logger.send method, *args, &blk
rescue NoMethodError
  super
end
prefix=(prefix) click to toggle source
# File lib/injectedlogger/logger.rb, line 62
def prefix=(prefix)
  set_prefix prefix
  add_methods
end
respond_to_missing?(method, priv = false) click to toggle source
Calls superclass method
# File lib/injectedlogger/logger.rb, line 89
def respond_to_missing?(method, priv = false)
  logger.respond_to?(method, priv) || super
end

Private Instance Methods

add_methods() click to toggle source
# File lib/injectedlogger/logger.rb, line 110
def add_methods
  old_levels = level_info ? level_info[:supported] : []
  self.level_info = InjectedLogger::Delegator.delegate_levels(
    from: logger, on: self, prefix: prefix, extra_levels: self.levels,
    old_levels: old_levels, fallback: fallback)
  set_levels(level_info[:supported])
end
info_message(level_info) click to toggle source
# File lib/injectedlogger/logger.rb, line 124
def info_message(level_info)
  message = if level_info[:fallback]
              "non-native log levels #{level_info[:nonnative].join ', '} emulated" \
                " using #{level_info[:fallback].upcase} severity"
            elsif level_info[:nonnative].any?
              "unsupported log levels #{level_info[:nonnative].join ', '}"
            else
              nil
            end
  send level_info[:info], message if message
end
ready() click to toggle source
# File lib/injectedlogger/logger.rb, line 118
def ready
  level_info[:supported].tap do
    info_message(level_info) if level_info[:info]
  end
end
set_fallback(level) click to toggle source
# File lib/injectedlogger/logger.rb, line 106
def set_fallback(level)
  @fallback = level
end
set_levels(levels) click to toggle source
# File lib/injectedlogger/logger.rb, line 102
def set_levels(levels)
  @levels = levels
end
set_prefix(prefix) click to toggle source
# File lib/injectedlogger/logger.rb, line 98
def set_prefix(prefix)
  @prefix = prefix
end