Use url.rule instead of request.endpoint for span name flask instrumentation (#1260)

This commit is contained in:
Leighton Chen
2020-10-21 13:08:33 -04:00
committed by GitHub
parent 9c4a6a0ac6
commit d38463ad70
3 changed files with 11 additions and 5 deletions

View File

@ -2,6 +2,8 @@
## Unreleased
- Use `url.rule` instead of `request.endpoint` for span name
([#1260](https://github.com/open-telemetry/opentelemetry-python/pull/1260))
- Record span status and http.status_code attribute on exception
([#1257](https://github.com/open-telemetry/opentelemetry-python/pull/1257))

View File

@ -110,9 +110,13 @@ def _before_request():
return
environ = flask.request.environ
span_name = flask.request.endpoint or otel_wsgi.get_default_span_name(
environ
)
span_name = None
try:
span_name = flask.request.url_rule.rule
except AttributeError:
pass
if span_name is None:
span_name = otel_wsgi.get_default_span_name(environ)
token = context.attach(
propagators.extract(otel_wsgi.get_header_from_environ, environ)
)

View File

@ -102,7 +102,7 @@ class TestProgrammatic(InstrumentationTest, TestBase, WsgiTestBase):
span_list = self.memory_exporter.get_finished_spans()
self.assertEqual(len(span_list), 1)
self.assertEqual(span_list[0].name, "_hello_endpoint")
self.assertEqual(span_list[0].name, "/hello/<int:helloid>")
self.assertEqual(span_list[0].kind, trace.SpanKind.SERVER)
self.assertEqual(span_list[0].attributes, expected_attrs)
@ -154,7 +154,7 @@ class TestProgrammatic(InstrumentationTest, TestBase, WsgiTestBase):
resp.close()
span_list = self.memory_exporter.get_finished_spans()
self.assertEqual(len(span_list), 1)
self.assertEqual(span_list[0].name, "_hello_endpoint")
self.assertEqual(span_list[0].name, "/hello/<int:helloid>")
self.assertEqual(span_list[0].kind, trace.SpanKind.SERVER)
self.assertEqual(span_list[0].attributes, expected_attrs)