Skip to content

Commit 676d9ff

Browse files
Revision: logs SDK does get_current, overload init and deprecate trace_id etc
1 parent 73e7b39 commit 676d9ff

File tree

1 file changed

+51
-5
lines changed
  • opentelemetry-sdk/src/opentelemetry/sdk/_logs/_internal

1 file changed

+51
-5
lines changed

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

Lines changed: 51 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -21,10 +21,11 @@
2121
import threading
2222
import traceback
2323
import warnings
24+
from functools import wraps
2425
from os import environ
2526
from threading import Lock
2627
from time import time_ns
27-
from typing import Any, Callable, Tuple, Union, cast # noqa
28+
from typing import Any, Callable, Tuple, Union, cast, overload # noqa
2829

2930
from opentelemetry._logs import Logger as APILogger
3031
from opentelemetry._logs import LoggerProvider as APILoggerProvider
@@ -166,6 +167,19 @@ def _from_env_if_absent(
166167
)
167168

168169

170+
def deprecated(message):
171+
# Custom "deprecated" decorator compatible with Python < 3.13
172+
def decorator(func):
173+
@wraps(func)
174+
def wrapper(*args, **kwargs):
175+
warnings.warn(message, DeprecationWarning, stacklevel=2)
176+
return func(*args, **kwargs)
177+
178+
return wrapper
179+
180+
return decorator
181+
182+
169183
class LogRecord(APILogRecord):
170184
"""A LogRecord instance represents an event being logged.
171185
@@ -174,6 +188,39 @@ class LogRecord(APILogRecord):
174188
pertinent to the event being logged.
175189
"""
176190

191+
@overload
192+
def __init__(
193+
self,
194+
timestamp: int | None = None,
195+
observed_timestamp: int | None = None,
196+
context: Context | None = None,
197+
severity_text: str | None = None,
198+
severity_number: SeverityNumber | None = None,
199+
body: AnyValue | None = None,
200+
resource: Resource | None = None,
201+
attributes: _ExtendedAttributes | None = None,
202+
limits: LogLimits | None = _UnsetLogLimits,
203+
): ...
204+
205+
@overload
206+
@deprecated(
207+
"LogRecord init with `trace_id`, `span_id`, and/or `trace_flags` is deprecated. Use `context` instead."
208+
)
209+
def __init__(
210+
self,
211+
timestamp: int | None = None,
212+
observed_timestamp: int | None = None,
213+
trace_id: int | None = None,
214+
span_id: int | None = None,
215+
trace_flags: TraceFlags | None = None,
216+
severity_text: str | None = None,
217+
severity_number: SeverityNumber | None = None,
218+
body: AnyValue | None = None,
219+
resource: Resource | None = None,
220+
attributes: _ExtendedAttributes | None = None,
221+
limits: LogLimits | None = _UnsetLogLimits,
222+
): ...
223+
177224
def __init__(
178225
self,
179226
timestamp: int | None = None,
@@ -189,9 +236,9 @@ def __init__(
189236
attributes: _ExtendedAttributes | None = None,
190237
limits: LogLimits | None = _UnsetLogLimits,
191238
):
192-
# Prioritizes context over trace_id / span_id / trace_flags.
193-
# If context provided and its current span valid, then uses that span info.
194-
# Otherwise, uses provided trace_id etc for backwards compatibility.
239+
if not context:
240+
context = get_current()
241+
195242
if context is not None:
196243
span = get_current_span(context)
197244
span_context = span.get_span_context()
@@ -563,7 +610,6 @@ def _translate(self, record: logging.LogRecord) -> LogRecord:
563610
return LogRecord(
564611
timestamp=timestamp,
565612
observed_timestamp=observered_timestamp,
566-
context=get_current(),
567613
trace_id=span_context.trace_id,
568614
span_id=span_context.span_id,
569615
trace_flags=span_context.trace_flags,

0 commit comments

Comments
 (0)