def start_or_continue_trace(name, kvs = {}, incoming_context = {}, &block)
      log_start_or_continue(name, kvs, incoming_context)
      block.call
    rescue Exception => e
      log_error(e)
      raise
    ensure
      log_end(name)
    end
def start_or_continue_trace(name, kvs = {}, incoming_context = {}, &block)
      log_start_or_continue(name, kvs, incoming_context)
      block.call
    rescue Exception => e
      log_error(e)
      raise
    ensure
      log_end(name)
    end
Tracing blocks API methods

 Will start a new trace or continue an on-going one (such as
 from incoming remote requests with context headers).

 @param name [String] the name of the span to start
 @param kvs [Hash] list of key values to be reported in the span
 @param incoming_context [Hash] specifies the incoming context.  At a
   minimum, it should specify :trace_id and :span_id from the following:
     @:trace_id the trace ID (must be an unsigned hex-string)
     :span_id the ID of the parent span (must be an unsigned hex-string)
     :level specifies data collection level (optional)