Skip to content

Commit 5308eee

Browse files
LoggingHandler translates to LogRecord with current Otel context
1 parent 4783932 commit 5308eee

File tree

2 files changed

+27
-12
lines changed

2 files changed

+27
-12
lines changed

opentelemetry-sdk/src/opentelemetry/sdk/_logs/_internal/__init__.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@
3737
std_to_otel,
3838
)
3939
from opentelemetry.attributes import _VALID_ANY_VALUE_TYPES, BoundedAttributes
40+
from opentelemetry.context import get_current
4041
from opentelemetry.context.context import Context
4142
from opentelemetry.sdk.environment_variables import (
4243
OTEL_ATTRIBUTE_COUNT_LIMIT,
@@ -554,6 +555,7 @@ def _translate(self, record: logging.LogRecord) -> LogRecord:
554555
return LogRecord(
555556
timestamp=timestamp,
556557
observed_timestamp=observered_timestamp,
558+
context=get_current(),
557559
trace_id=span_context.trace_id,
558560
span_id=span_context.span_id,
559561
trace_flags=span_context.trace_flags,

opentelemetry-sdk/tests/logs/test_handler.py

Lines changed: 25 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
from opentelemetry._logs import NoOpLoggerProvider, SeverityNumber
2121
from opentelemetry._logs import get_logger as APIGetLogger
2222
from opentelemetry.attributes import BoundedAttributes
23+
from opentelemetry.context.context import Context
2324
from opentelemetry.sdk import trace
2425
from opentelemetry.sdk._logs import (
2526
LogData,
@@ -268,21 +269,33 @@ def __str__(self):
268269

269270
def test_log_record_trace_correlation(self):
270271
processor, logger = set_up_test_logging(logging.WARNING)
272+
mock_context = Context()
271273

272274
tracer = trace.TracerProvider().get_tracer(__name__)
273275
with tracer.start_as_current_span("test") as span:
274-
with self.assertLogs(level=logging.CRITICAL):
275-
logger.critical("Critical message within span")
276-
277-
log_record = processor.get_log_record(0)
278-
279-
self.assertEqual(log_record.body, "Critical message within span")
280-
self.assertEqual(log_record.severity_text, "CRITICAL")
281-
self.assertEqual(log_record.severity_number, SeverityNumber.FATAL)
282-
span_context = span.get_span_context()
283-
self.assertEqual(log_record.trace_id, span_context.trace_id)
284-
self.assertEqual(log_record.span_id, span_context.span_id)
285-
self.assertEqual(log_record.trace_flags, span_context.trace_flags)
276+
with patch(
277+
"opentelemetry.sdk._logs._internal.get_current",
278+
return_value=mock_context,
279+
):
280+
with self.assertLogs(level=logging.CRITICAL):
281+
logger.critical("Critical message within span")
282+
283+
log_record = processor.get_log_record(0)
284+
285+
self.assertEqual(
286+
log_record.body, "Critical message within span"
287+
)
288+
self.assertEqual(log_record.severity_text, "CRITICAL")
289+
self.assertEqual(
290+
log_record.severity_number, SeverityNumber.FATAL
291+
)
292+
self.assertEqual(log_record.context, mock_context)
293+
span_context = span.get_span_context()
294+
self.assertEqual(log_record.trace_id, span_context.trace_id)
295+
self.assertEqual(log_record.span_id, span_context.span_id)
296+
self.assertEqual(
297+
log_record.trace_flags, span_context.trace_flags
298+
)
286299

287300
def test_warning_without_formatter(self):
288301
processor, logger = set_up_test_logging(logging.WARNING)

0 commit comments

Comments
 (0)