class ElasticAPM::OpenTracing::Span
@api private
def context
def context @span_context end
def finish(end_time: Time.now)
def finish(end_time: Time.now) return unless (agent = ElasticAPM.agent) elastic_span.done clock_end: Util.micros(end_time) case elastic_span when ElasticAPM::Transaction agent.instrumenter.current_transaction = nil when ElasticAPM::Span agent.instrumenter.current_spans.delete(elastic_span) end agent.enqueue elastic_span end
def get_baggage_item(_key)
def get_baggage_item(_key) ElasticAPM.agent.config.logger.warn( 'Baggage is not supported by ElasticAPM' ) nil end
def initialize(elastic_span, span_context)
def initialize(elastic_span, span_context) @elastic_span = elastic_span @span_context = span_context end
def log_kv(timestamp: nil, **fields)
def log_kv(timestamp: nil, **fields) if (exception = fields[:'error.object']) ElasticAPM.report exception elsif (message = fields[:message]) ElasticAPM.report_message message end end
def operation_name=(name)
def operation_name=(name) elastic_span.name = name end
def set_baggage_item(_key, _value)
def set_baggage_item(_key, _value) ElasticAPM.agent.config.logger.warn( 'Baggage is not supported by ElasticAPM' ) end
def set_tag(key, val)
def set_tag(key, val) if elastic_span.is_a?(Transaction) case key.to_s when 'type' elastic_span.type = val when 'result' elastic_span.result = val when /user\.(\w+)/ set_user_value($1, val) else elastic_span.context.labels[key] = val end else elastic_span.context.labels[key] = val end self end
def set_user_value(key, value)
def set_user_value(key, value) return unless elastic_span.is_a?(Transaction) setter = :"#{key}=" return unless elastic_span.context.user.respond_to?(setter) elastic_span.context.user.send(setter, value) end