lib/lenjador.rb in lenjador-1.4.0 vs lib/lenjador.rb in lenjador-2.0.0
- old
+ new
@@ -4,63 +4,70 @@
require_relative 'lenjador/adapters'
require_relative 'lenjador/utils'
require_relative 'lenjador/null_logger'
require_relative 'lenjador/preprocessors'
-LOG_LEVEL_QUERY_METHODS = %i[debug? info? warn? error? fatal?].freeze
-
class Lenjador
- def self.build(service_name, loggers_config, preprocessors_config = {})
- loggers_config ||= {stdout: nil}
+ Severity = ::Logger::Severity
+ SEV_LABEL = %w[debug info warn error fatal any].freeze
+
+ def self.build(service_name, logger_config, preprocessors_config = {})
+ logger_config ||= {}
+
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)
+ adapter = Adapters.get(service_name, logger_config)
+ level = SEV_LABEL.index(logger_config.fetch(:level, 'debug'))
+
+ new(adapter, level, preprocessors)
end
- def initialize(adapters, preprocessors)
- @adapters = adapters
+ def initialize(adapter, level, preprocessors)
+ @adapter = adapter
+ @level = level
@preprocessors = preprocessors
end
def debug(*args, &block)
- log :debug, *args, &block
+ log(Severity::DEBUG, *args, &block)
end
def info(*args, &block)
- log :info, *args, &block
+ log(Severity::INFO, *args, &block)
end
def warn(*args, &block)
- log :warn, *args, &block
+ log(Severity::WARN, *args, &block)
end
def error(*args, &block)
- log :error, *args, &block
+ log(Severity::ERROR, *args, &block)
end
def fatal(*args, &block)
- log :fatal, *args, &block
+ log(Severity::FATAL, *args, &block)
end
- LOG_LEVEL_QUERY_METHODS.each do |method|
- define_method(method) do
- @adapters.any? { |adapter| adapter.public_send(method) }
- end
- end
+ def debug?; @level <= Severity::DEBUG; end
+ def info?; @level <= Severity::INFO; end
+
+ def warn?; @level <= Severity::WARN; end
+
+ def error?; @level <= Severity::ERROR; end
+
+ def fatal?; @level <= Severity::FATAL; end
+
private
def log(level, *args, &block)
+ return true if level < @level
+
data = parse_log_data(*args, &block)
processed_data = preprocess(data)
- @adapters.each do |adapter|
- adapter.log(level, processed_data)
- end
+ @adapter.log(level, processed_data)
end
def preprocess(data)
@preprocessors.inject(data) do |data_to_process, preprocessor|
preprocessor.process(data_to_process)