22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
|
# File 'lib/chef/knife/chop/logging.rb', line 22
def define_log_methods( logger )
::Logging::LEVELS.each do |name,num|
code = "undef :#{name} if method_defined? :#{name}\n"
code << "undef :#{name}? if method_defined? :#{name}?\n"
if logger.level > num
code << <<-CODE
def #{name}?( ) false end
def #{name}( data = nil, trace = false ) false end
CODE
else
code << <<-CODE
def #{name}?( ) true end
def #{name}( data = nil, trace = nil )
caller = Kernel.caller[3]
num = #{num}
unless caller.match(%r(/chef/knife/chop)) # We assume anything else comes via Chef::Log ...
num -= 1
end
if num >= #{logger.level}
data = yield if block_given?
#log_event(::Logging::LogEvent.new(@name, num, caller, true))
log_event(::Logging::LogEvent.new(@name, num, data, trace.nil? ? @trace : trace))
end
true
end
CODE
end
logger._meta_eval(code, __FILE__, __LINE__)
end
logger
end
|