Skip to content

Commit 5b4b68d

Browse files
committed
Fixup Logger.emit signature
1 parent 64de448 commit 5b4b68d

File tree

4 files changed

+115
-11
lines changed

4 files changed

+115
-11
lines changed

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

Lines changed: 57 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,8 @@
3333
.. versionadded:: 1.15.0
3434
"""
3535

36+
from __future__ import annotations
37+
3638
from abc import ABC, abstractmethod
3739
from logging import getLogger
3840
from os import environ
@@ -144,7 +146,20 @@ def __init__(
144146
self._attributes = attributes
145147

146148
@abstractmethod
147-
def emit(self, record: "LogRecord") -> None:
149+
def emit(
150+
self,
151+
# record parameter does not match the spec but we'll remove it in a later release
152+
record: "LogRecord | None" = None,
153+
*,
154+
timestamp: int | None = None,
155+
observed_timestamp: int | None = None,
156+
context: Context | None = None,
157+
severity_number: SeverityNumber | None = None,
158+
severity_text: str | None = None,
159+
body: AnyValue | None = None,
160+
attributes: _ExtendedAttributes | None = None,
161+
event_name: str | None = None,
162+
) -> None:
148163
"""Emits a :class:`LogRecord` representing a log to the processing pipeline."""
149164

150165

@@ -154,7 +169,20 @@ class NoOpLogger(Logger):
154169
All operations are no-op.
155170
"""
156171

157-
def emit(self, record: "LogRecord") -> None:
172+
def emit(
173+
self,
174+
# record parameter does not match the spec but we'll remove it in a later release
175+
record: "LogRecord | None" = None,
176+
*,
177+
timestamp: int | None = None,
178+
observed_timestamp: int | None = None,
179+
context: Context | None = None,
180+
severity_number: SeverityNumber | None = None,
181+
severity_text: str | None = None,
182+
body: AnyValue | None = None,
183+
attributes: _ExtendedAttributes | None = None,
184+
event_name: str | None = None,
185+
) -> None:
158186
pass
159187

160188

@@ -188,8 +216,33 @@ def _logger(self) -> Logger:
188216
return self._real_logger
189217
return self._noop_logger
190218

191-
def emit(self, record: LogRecord) -> None:
192-
self._logger.emit(record)
219+
def emit(
220+
self,
221+
# record parameter does not match the spec but we'll remove it in a later release
222+
record: LogRecord | None = None,
223+
*,
224+
timestamp: int | None = None,
225+
observed_timestamp: int | None = None,
226+
context: Context | None = None,
227+
severity_number: SeverityNumber | None = None,
228+
severity_text: str | None = None,
229+
body: AnyValue | None = None,
230+
attributes: _ExtendedAttributes | None = None,
231+
event_name: str | None = None,
232+
) -> None:
233+
if record:
234+
self._logger.emit(record)
235+
else:
236+
self._logger.emit(
237+
timestamp=timestamp,
238+
observed_timestamp=observed_timestamp,
239+
context=context,
240+
severity_number=severity_number,
241+
severity_text=severity_text,
242+
body=body,
243+
attributes=attributes,
244+
event_name=event_name,
245+
)
193246

194247

195248
class LoggerProvider(ABC):

opentelemetry-api/tests/logs/test_proxy.py

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,19 @@ def get_logger(
3434

3535

3636
class LoggerTest(_logs.NoOpLogger):
37-
def emit(self, record: _logs.LogRecord) -> None:
37+
def emit(
38+
self,
39+
record: typing.Optional[_logs.LogRecord] = None,
40+
*,
41+
timestamp=None,
42+
observed_timestamp=None,
43+
context=None,
44+
severity_number=None,
45+
severity_text=None,
46+
body=None,
47+
attributes=None,
48+
event_name=None,
49+
) -> None:
3850
pass
3951

4052

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

Lines changed: 32 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -619,16 +619,17 @@ def _translate(self, record: logging.LogRecord) -> LogRecord:
619619
"WARN" if record.levelname == "WARNING" else record.levelname
620620
)
621621

622-
logger = get_logger(record.name, logger_provider=self._logger_provider)
623-
return LogRecord(
622+
# FIXME: what to do with the resource?
623+
# logger = get_logger(record.name, logger_provider=self._logger_provider)
624+
return dict(
624625
timestamp=timestamp,
625626
observed_timestamp=observered_timestamp,
626627
context=get_current() or None,
627628
severity_text=level_name,
628629
severity_number=severity_number,
629630
body=body,
630-
resource=logger.resource,
631631
attributes=attributes,
632+
# resource=logger.resource,
632633
)
633634

634635
def emit(self, record: logging.LogRecord) -> None:
@@ -639,7 +640,7 @@ def emit(self, record: logging.LogRecord) -> None:
639640
"""
640641
logger = get_logger(record.name, logger_provider=self._logger_provider)
641642
if not isinstance(logger, NoOpLogger):
642-
logger.emit(self._translate(record))
643+
logger.emit(**self._translate(record))
643644

644645
def flush(self) -> None:
645646
"""
@@ -678,11 +679,37 @@ def __init__(
678679
def resource(self):
679680
return self._resource
680681

681-
def emit(self, record: LogRecord):
682+
def emit(
683+
self,
684+
# record is not on the specs and will be deprecated in a followup release
685+
record: LogRecord | None = None,
686+
*,
687+
timestamp: int | None = None,
688+
observed_timestamp: int | None = None,
689+
context: Context | None = None,
690+
severity_text: str | None = None,
691+
severity_number: SeverityNumber | None = None,
692+
body: AnyValue | None = None,
693+
attributes: _ExtendedAttributes | None = None,
694+
event_name: str | None = None,
695+
):
682696
"""Emits the :class:`LogData` by associating :class:`LogRecord`
683697
and instrumentation info.
684698
"""
699+
if not record:
700+
record = LogRecord(
701+
timestamp=timestamp,
702+
observed_timestamp=observed_timestamp,
703+
context=context,
704+
severity_text=severity_text,
705+
severity_number=severity_number,
706+
body=body,
707+
attributes=attributes,
708+
event_name=event_name,
709+
)
710+
685711
log_data = LogData(record, self._instrumentation_scope)
712+
686713
self._multi_log_record_processor.on_emit(log_data)
687714

688715

opentelemetry-sdk/tests/test_configurator.py

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -113,7 +113,19 @@ def __init__(self, name, resource, processor):
113113
self.resource = resource
114114
self.processor = processor
115115

116-
def emit(self, record):
116+
def emit(
117+
self,
118+
record=None,
119+
*,
120+
timestamp=None,
121+
observed_timestamp=None,
122+
context=None,
123+
severity_number=None,
124+
severity_text=None,
125+
body=None,
126+
attributes=None,
127+
event_name=None,
128+
):
117129
self.processor.emit(record)
118130

119131

0 commit comments

Comments
 (0)