Skip to content

Commit eb60fe9

Browse files
committed
Use overload and deprecate the Logger.emit interface with just logrecord
1 parent cee1516 commit eb60fe9

File tree

2 files changed

+95
-4
lines changed
  • opentelemetry-api/src/opentelemetry/_logs/_internal
  • opentelemetry-sdk/src/opentelemetry/sdk/_logs/_internal

2 files changed

+95
-4
lines changed

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

Lines changed: 70 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -145,10 +145,32 @@ def __init__(
145145
self._schema_url = schema_url
146146
self._attributes = attributes
147147

148+
@overload
149+
def emit(
150+
self,
151+
*,
152+
timestamp: int | None = None,
153+
observed_timestamp: int | None = None,
154+
context: Context | None = None,
155+
severity_number: SeverityNumber | None = None,
156+
severity_text: str | None = None,
157+
body: AnyValue | None = None,
158+
attributes: _ExtendedAttributes | None = None,
159+
event_name: str | None = None,
160+
) -> None: ...
161+
162+
@overload
163+
@deprecated(
164+
"Logger.emit with record parameter is deprecated since 1.38.0, use the keyword arguments instead."
165+
)
166+
def emit(
167+
self,
168+
record: "LogRecord",
169+
) -> None: ...
170+
148171
@abstractmethod
149172
def emit(
150173
self,
151-
# record parameter does not match the spec but we'll remove it in a later release
152174
record: "LogRecord | None" = None,
153175
*,
154176
timestamp: int | None = None,
@@ -169,9 +191,32 @@ class NoOpLogger(Logger):
169191
All operations are no-op.
170192
"""
171193

194+
@overload
195+
def emit(
196+
self,
197+
*,
198+
timestamp: int | None = None,
199+
observed_timestamp: int | None = None,
200+
context: Context | None = None,
201+
severity_number: SeverityNumber | None = None,
202+
severity_text: str | None = None,
203+
body: AnyValue | None = None,
204+
attributes: _ExtendedAttributes | None = None,
205+
event_name: str | None = None,
206+
) -> None: ...
207+
208+
@overload
209+
@deprecated(
210+
"Logger.emit with record parameter is deprecated since 1.38.0, use the keyword arguments instead."
211+
)
212+
def emit(
213+
self,
214+
record: "LogRecord",
215+
) -> None: ...
216+
217+
@abstractmethod
172218
def emit(
173219
self,
174-
# record parameter does not match the spec but we'll remove it in a later release
175220
record: "LogRecord | None" = None,
176221
*,
177222
timestamp: int | None = None,
@@ -216,9 +261,31 @@ def _logger(self) -> Logger:
216261
return self._real_logger
217262
return self._noop_logger
218263

264+
@overload
265+
def emit(
266+
self,
267+
*,
268+
timestamp: int | None = None,
269+
observed_timestamp: int | None = None,
270+
context: Context | None = None,
271+
severity_number: SeverityNumber | None = None,
272+
severity_text: str | None = None,
273+
body: AnyValue | None = None,
274+
attributes: _ExtendedAttributes | None = None,
275+
event_name: str | None = None,
276+
) -> None: ...
277+
278+
@overload
279+
@deprecated(
280+
"Logger.emit with record parameter is deprecated since 1.38.0, use the keyword arguments instead."
281+
)
282+
def emit(
283+
self,
284+
record: "LogRecord",
285+
) -> None: ...
286+
219287
def emit(
220288
self,
221-
# record parameter does not match the spec but we'll remove it in a later release
222289
record: LogRecord | None = None,
223290
*,
224291
timestamp: int | None = None,

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

Lines changed: 25 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -693,9 +693,31 @@ def __init__(
693693
def resource(self):
694694
return self._resource
695695

696+
@overload
697+
def emit(
698+
self,
699+
*,
700+
timestamp: int | None = None,
701+
observed_timestamp: int | None = None,
702+
context: Context | None = None,
703+
severity_number: SeverityNumber | None = None,
704+
severity_text: str | None = None,
705+
body: AnyValue | None = None,
706+
attributes: _ExtendedAttributes | None = None,
707+
event_name: str | None = None,
708+
) -> None: ...
709+
710+
@overload
711+
@deprecated(
712+
"Logger.emit with record parameter is deprecated since 1.38.0, use the keyword arguments instead."
713+
)
714+
def emit(
715+
self,
716+
record: "LogRecord",
717+
) -> None: ...
718+
696719
def emit(
697720
self,
698-
# record is not on the specs and will be deprecated in a followup release
699721
record: APILogRecord | None = None,
700722
*,
701723
timestamp: int | None = None,
@@ -710,6 +732,8 @@ def emit(
710732
"""Emits the :class:`LogData` by associating :class:`LogRecord`
711733
and instrumentation info.
712734
"""
735+
# TODO: add a warning after 1.39.0 for deprecated interface
736+
713737
if not record:
714738
record = LogRecord(
715739
timestamp=timestamp,

0 commit comments

Comments
 (0)