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
55
|
# File 'lib/l2met/log.rb', line 24
def log(data)
data[:level] ||= :info
unless log_level_allowed?(data[:level])
yield if block_given?
return
end
data[:time] ||= Time.now.utc
result = nil
name = nil
if data.key?(:measure)
name = "#{ENV['APP_NAME']}.#{data.delete(:measure)}"
end
if block_given?
start = Time.now
result = yield
elapsed = (Time.now.to_f - start.to_f) * 1000
data["measure.#{name}"] = elapsed.round
end
data.reduce(out = []) do |buf, (key, value)|
value = if value.is_a?(String)
"\"#{value}\""
elsif value.respond_to?(:iso8601)
value.iso8601
else
value
end
buf << [key, value].join('=')
buf << ' '
end
$stdout.puts(out.join(''))
result
end
|