lib/sapience/base.rb in sapience-1.0.15 vs lib/sapience/base.rb in sapience-2.0.0
- old
+ new
@@ -1,10 +1,11 @@
module Sapience
# rubocop:disable ClassLength
class Base
# Class name to be logged
attr_accessor :name, :filter
+ include Sapience::LogMethods
# Set the logging level for this logger
#
# Note: This level is only for this particular instance. It does not override
# the log level in any logging instance or the default log level
@@ -21,10 +22,11 @@
# default log level
def level
@level || Sapience.config.default_level
end
+ # TODO: Move this to logger.rb?
# Implement the log level calls
# logger.debug(message, hash|exception=nil, &block)
#
# Implement the log level query
# logger.debug?
@@ -64,55 +66,11 @@
# logger.info("Request received", user: "joe", duration: 100)
#
# # Log an exception
# logger.info("Parsing received XML", exc)
#
- Sapience::LEVELS.each_with_index do |level, index|
- class_eval <<-EOT, __FILE__, __LINE__ + 1
- def #{level}(message=nil, payload=nil, exception=nil, &block)
- if level_index <= #{index}
- log_internal(:#{level}, #{index}, message, payload, exception, &block)
- true
- else
- false
- end
- end
- def #{level}?
- level_index <= #{index}
- end
-
- def measure_#{level}(message, params = {}, &block)
- if level_index <= #{index}
- measure_internal(:#{level}, #{index}, message, params, &block)
- else
- block.call(params) if block
- end
- end
-
- def benchmark_#{level}(message, params = {}, &block)
- if level_index <= #{index}
- measure_internal(:#{level}, #{index}, message, params, &block)
- else
- block.call(params) if block
- end
- end
- EOT
- end
-
- # Dynamically supply the log level with every measurement call
- def measure(level, message, params = {}, &block)
- index = Sapience.config.level_to_index(level)
- if level_index <= index
- measure_internal(level, index, message, params, &block)
- else
- block.call(params) if block
- end
- end
-
- alias_method :benchmark, :measure
-
# :nodoc:
def tagged(*tags, &block)
Sapience.tagged(*tags, &block)
end
@@ -257,9 +215,10 @@
def should_log?(log)
# Ensure minimum log level is met, and check filter
(level_index <= (log.level_index || 0)) && include_message?(log)
end
+ # TODO: Move this to logger.rb?
# Log message at the specified level
# rubocop:disable AbcSize, PerceivedComplexity, CyclomaticComplexity, LineLength
def log_internal(level, index, message = nil, payload = nil, exception = nil)
# Exception being logged?
if exception.nil? && payload.nil? && message.respond_to?(:backtrace) && message.respond_to?(:message)