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