in elasticapm/contrib/opentracing/span.py [0:0]
def set_tag(self, key, value):
if self.is_transaction:
if key == "type":
self.elastic_apm_ref.transaction_type = value
elif key == "result":
self.elastic_apm_ref.result = value
elif key == tags.HTTP_STATUS_CODE:
self.elastic_apm_ref.result = "HTTP {}xx".format(str(value)[0])
traces.set_context({"status_code": value}, "response")
elif key == "user.id":
traces.set_user_context(user_id=value)
elif key == "user.username":
traces.set_user_context(username=value)
elif key == "user.email":
traces.set_user_context(email=value)
elif key == tags.HTTP_URL:
traces.set_context({"url": get_url_dict(value)}, "request")
elif key == tags.HTTP_METHOD:
traces.set_context({"method": value}, "request")
elif key == tags.COMPONENT:
traces.set_context({"framework": {"name": value}}, "service")
else:
self.elastic_apm_ref.label(**{key: value})
elif not self.is_dropped:
if key.startswith("db."):
span_context = self.elastic_apm_ref.context or {}
if "db" not in span_context:
span_context["db"] = {}
if key == tags.DATABASE_STATEMENT:
span_context["db"]["statement"] = value
elif key == tags.DATABASE_USER:
span_context["db"]["user"] = value
elif key == tags.DATABASE_TYPE:
span_context["db"]["type"] = value
self.elastic_apm_ref.type = "db." + value
else:
self.elastic_apm_ref.label(**{key: value})
self.elastic_apm_ref.context = span_context
elif key == tags.SPAN_KIND:
self.elastic_apm_ref.type = value
else:
self.elastic_apm_ref.label(**{key: value})
return self