class Logged::Logger

Logger wrapping a component

Attributes

component[R]
enabled[W]
loggers[R]

Public Class Methods

new(loggers, component, formatter) click to toggle source
# File lib/logged/logger.rb, line 14
def initialize(loggers, component, formatter)
  @loggers   = loggers
  @component = component
  @formatter = formatter
  @enabled   = true
end

Public Instance Methods

<<(_msg) click to toggle source
# File lib/logged/logger.rb, line 63
def <<(_msg); end
add(severity, message = nil, progname = nil) { || ... } click to toggle source
# File lib/logged/logger.rb, line 21
def add(severity, message = nil, progname = nil)
  return unless enabled?

  message = yield    if block_given? && message.blank?
  message = progname if message.blank?

  data, event = extract_data_and_event(message)

  return if data.blank?

  level = Logged.level_to_sym(severity)

  @loggers.each do |logger, options|
    next unless logger.send("#{level}?")

    add_to_logger(level, event, data, logger, options)
  end
end
Also aliased as: log
close() click to toggle source
# File lib/logged/logger.rb, line 53
def close
  @loggers.keys.each do |logger|
    logger.close if logger.respond_to?(:close)
  end
end
datetime_format() click to toggle source
# File lib/logged/logger.rb, line 59
def datetime_format; end
datetime_format=(_format) click to toggle source
# File lib/logged/logger.rb, line 61
def datetime_format=(_format); end
disable!() click to toggle source
# File lib/logged/logger.rb, line 73
def disable!
  self.enabled = false
end
enable!() click to toggle source
# File lib/logged/logger.rb, line 69
def enable!
  self.enabled = true
end
enabled?() click to toggle source
# File lib/logged/logger.rb, line 65
def enabled?
  @enabled
end
log(severity, message = nil, progname = nil)
Alias for: add

Private Instance Methods

add_to_logger(level, event, data, logger, options) click to toggle source
# File lib/logged/logger.rb, line 87
def add_to_logger(level, event, data, logger, options)
  data = prepare_data(event, data, options)

  return if data.blank?

  formatter = options[:formatter] || @formatter

  msg = formatter.call(data)

  return if msg.blank?

  log_data(logger, level, msg)
end
extract_data_and_event(message) click to toggle source
# File lib/logged/logger.rb, line 111
def extract_data_and_event(message)
  return if message.blank?

  message = { message: message } if message.is_a?(String)

  event = message.delete('@event')

  message = Logged.custom_data(Logged.config, event, message)
  return [nil, nil] if message.blank?

  message = Logged.custom_data(Logged.config[component], event, message)
  return [nil, nil] if message.blank?

  [message, event]
end
log_data(logger, level, msg) click to toggle source
# File lib/logged/logger.rb, line 101
def log_data(logger, level, msg)
  if logger.respond_to?(:tagged)
    logger.tagged(*current_tags) do
      logger.send(level, msg)
    end
  else
    logger.send(level, msg)
  end
end
prepare_data(event, data, options) click to toggle source
# File lib/logged/logger.rb, line 79
def prepare_data(event, data, options)
  config = Logged.config[component].loggers[options[:name]]

  return nil if Logged.ignore?(config, event)

  Logged.custom_data(config, event, data)
end