diff --git a/instrumentation/opentelemetry-instrumentation-django/src/opentelemetry/instrumentation/django/middleware/otel_middleware.py b/instrumentation/opentelemetry-instrumentation-django/src/opentelemetry/instrumentation/django/middleware/otel_middleware.py index bebf6fb42b..18c97b75fa 100644 --- a/instrumentation/opentelemetry-instrumentation-django/src/opentelemetry/instrumentation/django/middleware/otel_middleware.py +++ b/instrumentation/opentelemetry-instrumentation-django/src/opentelemetry/instrumentation/django/middleware/otel_middleware.py @@ -174,6 +174,9 @@ def _get_span_name(request): if hasattr(match, "route") and match.route: return f"{request.method} {match.route}" + + if hasattr(match, "url_name") and match.url_name: + return f"{request.method} {match.url_name}" return request.method diff --git a/instrumentation/opentelemetry-instrumentation-django/tests/test_middleware.py b/instrumentation/opentelemetry-instrumentation-django/tests/test_middleware.py index 6129d0176e..6f219d1cba 100644 --- a/instrumentation/opentelemetry-instrumentation-django/tests/test_middleware.py +++ b/instrumentation/opentelemetry-instrumentation-django/tests/test_middleware.py @@ -78,8 +78,10 @@ from django.urls import path else: from django.conf.urls import url as re_path + def path(p, *args, **kwargs): - return re_path(r"^%s$" % p, *args, **kwargs) + return re_path(r"^%s$" % p, *args, **kwargs) + urlpatterns = [ re_path(r"^traced/", traced), @@ -217,7 +219,7 @@ def test_empty_path(self): span = spans[0] - self.assertEqual(span.name, "empty") + self.assertEqual(span.name, "GET empty") def test_traced_post(self): Client().post("/traced/")