module Logged

logged

Constants

CONFIG_KEYS

special keys which not represent a component

VERSION

Version

Public Class Methods

[](component)
Alias for: logger_by_component
components() click to toggle source

configured components

# File lib/logged.rb, line 146
def components
  config.keys - CONFIG_KEYS
end
custom_data(conf, event, data) click to toggle source

run data callbacks

# File lib/logged.rb, line 138
def custom_data(conf, event, data)
  return data unless conf.enabled
  return data unless conf.custom_data.respond_to?(:call)

  conf.custom_data.call(event, data)
end
default_formatter() click to toggle source

default log formatter

# File lib/logged.rb, line 42
def default_formatter
  config.formatter || (@default_formatter ||= Logged::Formatter::KeyValue.new)
end
default_level() click to toggle source

default log level

# File lib/logged.rb, line 37
def default_level
  config.level || :info
end
enable_component(component) click to toggle source

configure and enable component

# File lib/logged.rb, line 108
def enable_component(component)
  loggers = loggers_for(component)

  return unless loggers.any?

  loggers.each do |logger, options|
    level = options[:level] || config[component].level || default_level

    logger.level = level_to_const(level) if logger.respond_to?(:'level=')
  end

  # only attach subscribers with loggers
  @subscribers[component].each do |subscriber|
    subscriber.attach_to(component)
  end
end
ignore?(conf, event) click to toggle source

check if event should be ignored

# File lib/logged.rb, line 126
def ignore?(conf, event)
  return false unless event
  return false unless conf.enabled

  return true if !event.is_a?(String) && conf.ignore.is_a?(Array) && conf.ignore.include?(event.name)

  return conf.custom_ignore.call(event) if conf.custom_ignore.respond_to?(:call)

  false
end
load_logger(name, conf) click to toggle source

load logger from configuration

# File lib/logged.rb, line 92
def load_logger(name, conf)
  return [nil, nil] unless conf.enabled

  options = conf.dup
  options[:name] = name

  logger = options.delete(:logger)

  logger = Rails.logger if logger == :rails

  return [nil, nil] unless logger

  [logger, options]
end
logger_by_component(component) click to toggle source

logger wrapper for component

# File lib/logged.rb, line 47
def logger_by_component(component)
  return nil unless config.enabled

  key = "component_#{component}"

  return @component_loggers[key] if @component_loggers.key?(key)

  loggers = loggers_for(component)

  if loggers.blank?
    @component_loggers[key] = nil

    return nil
  end

  formatter = config[component].formatter || default_formatter

  @component_loggers[key] = Logger.new(loggers, component, formatter)
end
Also aliased as: []
loggers_for(component) click to toggle source

loggers for component

# File lib/logged.rb, line 69
def loggers_for(component)
  loggers_from_config(config)
    .merge(loggers_from_config(config[component]))
end
loggers_from_config(conf) click to toggle source

loggers from config level

# File lib/logged.rb, line 75
def loggers_from_config(conf)
  loggers = {}

  return loggers unless conf.enabled

  conf.loggers.each do |name, c|
    logger, options = load_logger(name, c)

    next unless logger && options

    loggers[logger] = options
  end

  loggers
end
request_env() click to toggle source

rack request environment

# File lib/logged.rb, line 151
def request_env
  Thread.current[:logged_request_env]
end
setup(app) click to toggle source

setup logged

# File lib/logged.rb, line 27
def setup(app)
  self.app    = app
  self.config = app.config.logged

  app.config.middleware.insert_after ::Rails::Rack::Logger, Logged::Rack::Logger

  setup_components
end

Private Class Methods

init() click to toggle source
# File lib/logged.rb, line 167
def init
  @subscribers       ||= Hash.new { |hash, key| hash[key] = [] }
  @component_loggers   = {}

  require_rails_subscribers
end
setup_components() click to toggle source
# File lib/logged.rb, line 157
def setup_components
  components.each do |component|
    remove_rails_subscriber(component) if config[component].disable_rails_logging

    next unless config[component].enabled

    enable_component(component)
  end
end