6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
|
# File 'lib/dynport_tools/log_tracer.rb', line 6
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
|