Skip to content

Commit 172f1c5

Browse files
Update LogRecord API; simplify test
1 parent 0aad430 commit 172f1c5

File tree

2 files changed

+47
-27
lines changed

2 files changed

+47
-27
lines changed

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

Lines changed: 32 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,9 @@
3737
from logging import getLogger
3838
from os import environ
3939
from time import time_ns
40-
from typing import Optional, cast
40+
from typing import Optional, cast, overload
41+
42+
from typing_extensions import deprecated
4143

4244
from opentelemetry._logs.severity import SeverityNumber
4345
from opentelemetry.context.context import Context
@@ -58,6 +60,35 @@ class LogRecord(ABC):
5860
pertinent to the event being logged.
5961
"""
6062

63+
@overload
64+
def __init__(
65+
self,
66+
timestamp: Optional[int] = None,
67+
observed_timestamp: Optional[int] = None,
68+
context: Optional[Context] = None,
69+
severity_text: Optional[str] = None,
70+
severity_number: Optional[SeverityNumber] = None,
71+
body: AnyValue = None,
72+
attributes: Optional[_ExtendedAttributes] = None,
73+
): ...
74+
75+
@overload
76+
@deprecated(
77+
"LogRecord init with `trace_id`, `span_id`, and/or `trace_flags` is deprecated. Use `context` instead."
78+
)
79+
def __init__(
80+
self,
81+
timestamp: Optional[int] = None,
82+
observed_timestamp: Optional[int] = None,
83+
trace_id: Optional[int] = None,
84+
span_id: Optional[int] = None,
85+
trace_flags: Optional["TraceFlags"] = None,
86+
severity_text: Optional[str] = None,
87+
severity_number: Optional[SeverityNumber] = None,
88+
body: AnyValue = None,
89+
attributes: Optional[_ExtendedAttributes] = None,
90+
): ...
91+
6192
def __init__(
6293
self,
6394
timestamp: Optional[int] = None,

opentelemetry-sdk/tests/logs/test_handler.py

Lines changed: 15 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,6 @@
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
2423
from opentelemetry.sdk import trace
2524
from opentelemetry.sdk._logs import (
2625
LogData,
@@ -95,6 +94,8 @@ def test_log_flush_noop(self):
9594

9695
def test_log_record_no_span_context(self):
9796
processor, logger = set_up_test_logging(logging.WARNING)
97+
98+
# Assert emit gets called for warning message
9899
with self.assertLogs(level=logging.WARNING):
99100
logger.warning("Warning message")
100101

@@ -299,35 +300,23 @@ def test_log_record_trace_correlation(self):
299300
log_record.trace_flags, span_context.trace_flags
300301
)
301302

302-
def test_log_record_trace_correlation_backwards_compatibility(self):
303+
def test_log_record_trace_correlation_deprecated(self):
303304
processor, logger = set_up_test_logging(logging.WARNING)
304-
mock_context = Context() # no span in context
305305

306306
tracer = trace.TracerProvider().get_tracer(__name__)
307307
with tracer.start_as_current_span("test") as span:
308-
with patch(
309-
"opentelemetry.sdk._logs._internal.get_current",
310-
return_value=mock_context,
311-
):
312-
with self.assertLogs(level=logging.CRITICAL):
313-
logger.critical("Critical message within span")
314-
315-
log_record = processor.get_log_record(0)
316-
317-
self.assertEqual(
318-
log_record.body, "Critical message within span"
319-
)
320-
self.assertEqual(log_record.severity_text, "CRITICAL")
321-
self.assertEqual(
322-
log_record.severity_number, SeverityNumber.FATAL
323-
)
324-
self.assertEqual(log_record.context, mock_context)
325-
span_context = span.get_span_context()
326-
self.assertEqual(log_record.trace_id, span_context.trace_id)
327-
self.assertEqual(log_record.span_id, span_context.span_id)
328-
self.assertEqual(
329-
log_record.trace_flags, span_context.trace_flags
330-
)
308+
with self.assertLogs(level=logging.CRITICAL):
309+
logger.critical("Critical message within span")
310+
311+
log_record = processor.get_log_record(0)
312+
313+
self.assertEqual(log_record.body, "Critical message within span")
314+
self.assertEqual(log_record.severity_text, "CRITICAL")
315+
self.assertEqual(log_record.severity_number, SeverityNumber.FATAL)
316+
span_context = span.get_span_context()
317+
self.assertEqual(log_record.trace_id, span_context.trace_id)
318+
self.assertEqual(log_record.span_id, span_context.span_id)
319+
self.assertEqual(log_record.trace_flags, span_context.trace_flags)
331320

332321
def test_warning_without_formatter(self):
333322
processor, logger = set_up_test_logging(logging.WARNING)

0 commit comments

Comments
 (0)