Sha256: e647e00b727321898204791524a84b26617d10c6873ef2c07a9f953aa9b9f78c
Contents?: true
Size: 1.22 KB
Versions: 4
Compression:
Stored size: 1.22 KB
Contents
class DynportTools::LogTracer REMOVE_COLOR = /\e.*?\dm/ FILTER_BACKTRACE = /\/(gems|ruby)\// LOGGER_METHODS = %w(unknown fatal error warn info debug) def self.setup(logger) return if logger.respond_to?(:log_trace) logger.class.class_eval do LOGGER_METHODS.each do |meth| alias_method :"#{meth}_without_log_tracer", meth def register_tracer(re_or_messahge, &block) tracers[re_or_messahge] = block end def tracers @tracers ||= Hash.new end def log_trace(message) self.tracers.each do |re_or_string, block| filtered_backtrace = filter_backtrace(caller) if filtered_backtrace.any? && (re_or_string.is_a?(String) ? message.include?(re_or_string) : message.match(re_or_string)) block.call(message.gsub(REMOVE_COLOR, "").strip, filtered_backtrace) end end end def filter_backtrace(trace) trace.reject { |t| t.match(FILTER_BACKTRACE) } end eval <<-EOM, nil, __FILE__, __LINE__ + 1 def #{meth}(message = nil) log_trace(message) #{meth}_without_log_tracer(message) end EOM end end end end
Version data entries
4 entries across 4 versions & 1 rubygems