lib/betterlog/log.rb in betterlog-0.11.0 vs lib/betterlog/log.rb in betterlog-0.12.0
- old
+ new
@@ -88,14 +88,16 @@
# structure with +name+ to allow for correct
# evaluation.
#
# @param name the name of the recorded metric.
# @param value of the recorded metric, defaults to duration if block was given.
+ # @param success a Proc with parameter +result+ that returns true iff block
+ # result was asuccessful
# @param **rest additional rest is logged as well.
# @return [ Log ] this object itself.
- def metric(name:, value: nil, **rest, &block)
- time_block(&block)
+ def metric(name:, value: nil, success: -> result { true }, **rest, &block)
+ result = time_block(&block)
rescue => error
e = Log::Event.ify(error)
rest |= e.as_hash.subhash(:error_class, :backtrace, :message)
rest[:message] = "#{rest[:message].inspect} while measuring metric #{name}"
raise error
@@ -105,9 +107,10 @@
rest[:duration] = timed_duration
end
event = build_metric(
name: name,
value: value || timed_duration,
+ success: success.(result),
**rest
)
emit event
end
end