lib/lorekeeper/multi_logger.rb in lorekeeper-2.1.0 vs lib/lorekeeper/multi_logger.rb in lorekeeper-2.2.0
- old
+ new
@@ -14,20 +14,37 @@
def inspect
"Lorekeeper multilogger, loggers: #{@loggers.map(&:inspect)}"
end
-if RUBY_VERSION > "2.6"
- def respond_to?(method, all_included = false)
+ # Define all common logging methods within Multilogger to avoid NoMethodError
+ def debug(*args, &block); call_loggers(:debug, *args, &block); end
+
+ def debug_with_data(*args, &block); call_loggers(:debug, *args, &block); end
+
+ def info(*args, &block); call_loggers(:info, *args, &block); end
+
+ def info_with_data(*args, &block); call_loggers(:info, *args, &block); end
+
+ def warn(*args, &block); call_loggers(:warn, *args, &block); end
+
+ def warn_with_data(*args, &block); call_loggers(:warn, *args, &block); end
+
+ def error(*args, &block); call_loggers(:error, *args, &block); end
+
+ def error_with_data(*args, &block); call_loggers(:error, *args, &block); end
+
+ def fatal(*args, &block); call_loggers(:fatal, *args, &block); end
+
+ def fatal_with_data(*args, &block); call_loggers(:fatal, *args, &block); end
+
+ def write(*args); call_loggers(:write, *args); end
+
+ def respond_to?(method, all_included: false)
@loggers.all? { |logger| logger.respond_to?(method, all_included) }
end
-else
- def respond_to?(method)
- @loggers.all? { |logger| logger.respond_to?(method) }
- end
-end
- def method_missing(method, *args, &block)
+ def call_loggers(method, *args, &block)
result = @loggers.map do |logger|
logger.public_send(method, *args, &block) if logger.respond_to?(method)
end
# We call all the methods, delete nils and duplicates.
# Then hope for the best taking the first value