class Logasm

Public Class Methods

build(service_name, loggers_config, preprocessors_config = {}) click to toggle source
# File lib/logasm.rb, line 10
def self.build(service_name, loggers_config, preprocessors_config = {})
  loggers_config ||= {stdout: nil}
  preprocessors = preprocessors_config.map do |type, arguments|
    Preprocessors.get(type.to_s, arguments || {})
  end
  adapters = loggers_config.map do |type, arguments|
    Adapters.get(type.to_s, service_name, arguments || {})
  end
  new(adapters, preprocessors)
end
new(adapters, preprocessors) click to toggle source
# File lib/logasm.rb, line 21
def initialize(adapters, preprocessors)
  @adapters = adapters
  @preprocessors = preprocessors
end

Public Instance Methods

debug(*args, &block) click to toggle source
# File lib/logasm.rb, line 26
def debug(*args, &block)
  log :debug, *args, &block
end
error(*args, &block) click to toggle source
# File lib/logasm.rb, line 38
def error(*args, &block)
  log :error, *args, &block
end
fatal(*args, &block) click to toggle source
# File lib/logasm.rb, line 42
def fatal(*args, &block)
  log :fatal, *args, &block
end
info(*args, &block) click to toggle source
# File lib/logasm.rb, line 30
def info(*args, &block)
  log :info, *args, &block
end
warn(*args, &block) click to toggle source
# File lib/logasm.rb, line 34
def warn(*args, &block)
  log :warn, *args, &block
end

Private Instance Methods

log(level, *args, &block) click to toggle source
# File lib/logasm.rb, line 54
def log(level, *args, &block)
  data = parse_log_data(*args, &block)
  processed_data = preprocess(data)

  @adapters.each do |adapter|
    adapter.log(level, processed_data)
  end
end
parse_log_data(message = nil, metadata = {}, &block) click to toggle source
# File lib/logasm.rb, line 69
def parse_log_data(message = nil, metadata = {}, &block)
  return message if message.is_a?(Hash)

  (metadata || {}).merge(message: block ? block.call : message)
end
preprocess(data) click to toggle source
# File lib/logasm.rb, line 63
def preprocess(data)
  @preprocessors.inject(data) do |data_to_process, preprocessor|
    preprocessor.process(data_to_process)
  end
end