lib/sapience/base.rb in sapience-0.1.1 vs lib/sapience/base.rb in sapience-0.1.2
- old
+ new
@@ -1,6 +1,7 @@
module Sapience
+ # rubocop:disable ClassLength
class Base
# Class name to be logged
attr_accessor :name, :filter
# Set the logging level for this logger
@@ -174,11 +175,11 @@
protected
# Write log data to underlying data storage
def log(_log_)
- raise NotImplementedError.new('Logging Appender must implement #log(log)')
+ fail NotImplementedError, "Logging Appender must implement #log(log)"
end
private
# Initializer for Abstract Class Sapience::Base
@@ -196,14 +197,15 @@
# filter [Regexp|Proc]
# RegExp: Only include log messages where the class name matches the supplied
# regular expression. All other messages will be ignored
# Proc: Only include log messages where the supplied Proc returns true
# The Proc must return true or false
- def initialize(klass, level = nil, filter = nil) # rubocop:disable AbcSize, PerceivedComplexity, CyclomaticComplexity
+ # rubocop:disable AbcSize, PerceivedComplexity, CyclomaticComplexity, LineLength
+ def initialize(klass, level = nil, filter = nil)
# Support filtering all messages to this logger using a Regular Expression
# or Proc
- raise ':filter must be a Regexp or Proc' unless filter.nil? || filter.is_a?(Regexp) || filter.is_a?(Proc)
+ fail ArgumentError, ":filter must be a Regexp or Proc" unless filter.nil? || filter.is_a?(Regexp) || filter.is_a?(Proc)
@filter = filter.is_a?(Regexp) ? filter.freeze : filter
@name = klass.is_a?(String) ? klass : klass.name
if level.nil?
# Allow the global default level to determine this loggers log level
@@ -211,10 +213,11 @@
@level = nil
else
self.level = level
end
end
+ # rubocop:enable AbcSize, PerceivedComplexity, CyclomaticComplexity, LineLength
# Return the level index for fast comparisons
# Returns the global default level index if the level has not been explicitly
# set for this instance
def level_index
@@ -224,11 +227,11 @@
# Whether to log the supplied message based on the current filter if any
def include_message?(log)
return true if @filter.nil?
if @filter.is_a?(Regexp)
- (@filter =~ log.name) != nil
+ !(@filter =~ log.name).nil?
elsif @filter.is_a?(Proc)
@filter.call(log) == true
end
end
@@ -237,11 +240,12 @@
# Ensure minimum log level is met, and check filter
(level_index <= (log.level_index || 0)) && include_message?(log)
end
# Log message at the specified level
- def log_internal(level, index, message = nil, payload = nil, exception = nil) # rubocop:disable AbcSize, PerceivedComplexity, CyclomaticComplexity
+ # 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)
exception = message
message = nil
elsif exception.nil? && payload && payload.respond_to?(:backtrace) && payload.respond_to?(:message)
@@ -279,21 +283,22 @@
min_duration = payload.delete(:min_duration) || 0.0
log.exception = payload.delete(:exception)
log.message = payload.delete(:message)
log.metric = payload.delete(:metric)
log.metric_amount = payload.delete(:metric_amount) || 1
- if duration = payload.delete(:duration)
+ if (duration = payload.delete(:duration))
return false if duration <= min_duration
log.duration = duration
end
log.payload = payload if payload.size > 0
end
self.log(log) if include_message?(log)
end
+ # rubocop:enable AbcSize, PerceivedComplexity, CyclomaticComplexity, LineLength
- SELF_PATTERN = File.join('lib', 'sapience')
+ SELF_PATTERN = File.join("lib", "sapience")
# Extract the callers backtrace leaving out Sapience
def extract_backtrace
stack = caller
while (first = stack.first) && first.include?(SELF_PATTERN)
@@ -301,17 +306,18 @@
end
stack
end
# Measure the supplied block and log the message
- def measure_internal(level, index, message, params) # rubocop:disable AbcSize, PerceivedComplexity, CyclomaticComplexity
+ # rubocop:disable AbcSize, PerceivedComplexity, CyclomaticComplexity, LineLength
+ def measure_internal(level, index, message, params)
start = Time.now
exception = nil
begin
if block_given?
result =
- if silence_level = params[:silence]
+ if (silence_level = params[:silence])
# In case someone accidentally sets `silence: true` instead of `silence: :error`
silence_level = :error if silence_level == true
silence(silence_level) { yield(params) }
else
yield(params)
@@ -331,11 +337,11 @@
metric = params[:metric]
duration =
if block_given?
1000.0 * (end_time - start)
else
- params[:duration] || fail('Mandatory block missing when :duration option is not supplied')
+ params[:duration] || fail("Mandatory block missing when :duration option is not supplied")
end
# Add scoped payload
if self.payload
payload = payload.nil? ? self.payload : self.payload.merge(payload)
@@ -362,20 +368,22 @@
else
# Log the message with its duration but leave out the exception that was raised
logged_exception = nil
backtrace = exception.backtrace
end
- log = Log.new(level, Thread.current.name, name, message, payload, end_time, duration, tags, index, logged_exception, metric, backtrace)
+ log = Log.new(level, Thread.current.name, name, message, payload, end_time, duration, tags, index, logged_exception, metric, backtrace) # rubocop:disable LineLength
self.log(log) if include_message?(log)
- raise exception
+ fail exception
elsif duration >= min_duration
# Only log if the block took longer than 'min_duration' to complete
# Add caller stack trace
backtrace = extract_backtrace if index >= Sapience.config.backtrace_level_index
- log = Log.new(level, Thread.current.name, name, message, payload, end_time, duration, tags, index, nil, metric, backtrace)
+ log = Log.new(level, Thread.current.name, name, message, payload, end_time, duration, tags, index, nil, metric, backtrace) # rubocop:disable LineLength
self.log(log) if include_message?(log)
end
end
end
+ # rubocop:enable AbcSize, PerceivedComplexity, CyclomaticComplexity, LineLength
end
+ # rubocop:enable ClassLength
end