From 418869260a4a442bbc479ab320994995e684f0b4 Mon Sep 17 00:00:00 2001 From: Dylan Russell Date: Mon, 7 Jul 2025 20:36:42 +0000 Subject: [PATCH 1/2] Update LogRecord API to set/use context. --- .../src/opentelemetry/_logs/_internal/__init__.py | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/opentelemetry-api/src/opentelemetry/_logs/_internal/__init__.py b/opentelemetry-api/src/opentelemetry/_logs/_internal/__init__.py index d74ea40f018..0598019a5d5 100644 --- a/opentelemetry-api/src/opentelemetry/_logs/_internal/__init__.py +++ b/opentelemetry-api/src/opentelemetry/_logs/_internal/__init__.py @@ -45,8 +45,14 @@ from opentelemetry.context.context import Context from opentelemetry.environment_variables import _OTEL_PYTHON_LOGGER_PROVIDER from opentelemetry.trace.span import TraceFlags +from opentelemetry.trace import ( + format_span_id, + format_trace_id, + get_current_span, +) from opentelemetry.util._once import Once from opentelemetry.util._providers import _load_provider +from opentelemetry.context import get_current from opentelemetry.util.types import AnyValue, _ExtendedAttributes _logger = getLogger(__name__) @@ -107,14 +113,17 @@ def __init__( attributes: Optional[_ExtendedAttributes] = None, event_name: Optional[str] = None, ) -> None: + if not context: + context = get_current() + span_context = get_current_span(context).get_span_context() self.timestamp = timestamp if observed_timestamp is None: observed_timestamp = time_ns() self.observed_timestamp = observed_timestamp self.context = context - self.trace_id = trace_id - self.span_id = span_id - self.trace_flags = trace_flags + self.trace_id = trace_id or span_context.trace_id + self.span_id = span_id or span_context.span_id + self.trace_flags = trace_flags or span_context.trace_flags self.severity_text = severity_text self.severity_number = severity_number self.body = body From 4cd68b4af31d007eccb9865a8524cc18e6e9f12d Mon Sep 17 00:00:00 2001 From: Dylan Russell Date: Mon, 7 Jul 2025 20:55:39 +0000 Subject: [PATCH 2/2] Run precommit and add changelog --- CHANGELOG.md | 3 ++- .../src/opentelemetry/_logs/_internal/__init__.py | 8 ++------ 2 files changed, 4 insertions(+), 7 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index ba135db4f87..7ea7831e4c3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -25,7 +25,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Update logger level to NOTSET in logs example ([#4637](https://github.com/open-telemetry/opentelemetry-python/pull/4637)) - Logging API accepts optional `context`; deprecates `trace_id`, `span_id`, `trace_flags`. - ([#4597](https://github.com/open-telemetry/opentelemetry-python/pull/4597)) + ([#4597](https://github.com/open-telemetry/opentelemetry-python/pull/4597)) and + ([#4668](https://github.com/open-telemetry/opentelemetry-python/pull/4668)) - sdk: use context instead of trace_id,span_id for initializing LogRecord ([#4653](https://github.com/open-telemetry/opentelemetry-python/pull/4653)) - Rename LogRecordProcessor.emit to on_emit diff --git a/opentelemetry-api/src/opentelemetry/_logs/_internal/__init__.py b/opentelemetry-api/src/opentelemetry/_logs/_internal/__init__.py index 0598019a5d5..0d22564c66a 100644 --- a/opentelemetry-api/src/opentelemetry/_logs/_internal/__init__.py +++ b/opentelemetry-api/src/opentelemetry/_logs/_internal/__init__.py @@ -42,17 +42,13 @@ from typing_extensions import deprecated from opentelemetry._logs.severity import SeverityNumber +from opentelemetry.context import get_current from opentelemetry.context.context import Context from opentelemetry.environment_variables import _OTEL_PYTHON_LOGGER_PROVIDER +from opentelemetry.trace import get_current_span from opentelemetry.trace.span import TraceFlags -from opentelemetry.trace import ( - format_span_id, - format_trace_id, - get_current_span, -) from opentelemetry.util._once import Once from opentelemetry.util._providers import _load_provider -from opentelemetry.context import get_current from opentelemetry.util.types import AnyValue, _ExtendedAttributes _logger = getLogger(__name__)