Skip to content

Commit 23b87f2

Browse files
authored
Merge branch 'main' into standardize-readme
2 parents 7e2e5b6 + 07700dd commit 23b87f2

File tree

8 files changed

+81
-79
lines changed

8 files changed

+81
-79
lines changed

CHANGELOG.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
2626
([#4637](https://github.com/open-telemetry/opentelemetry-python/pull/4637))
2727
- Logging API accepts optional `context`; deprecates `trace_id`, `span_id`, `trace_flags`.
2828
([#4597](https://github.com/open-telemetry/opentelemetry-python/pull/4597))
29+
- Rename LogRecordProcessor.emit to on_emit
30+
([#4648](https://github.com/open-telemetry/opentelemetry-python/pull/4648))
31+
- Logging API hide std_to_otel function to convert python logging severity to otel severity
32+
([#4649](https://github.com/open-telemetry/opentelemetry-python/pull/4649))
2933

3034
## Version 1.34.0/0.55b0 (2025-06-04)
3135

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

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@
4343
get_logger_provider,
4444
set_logger_provider,
4545
)
46-
from opentelemetry._logs.severity import SeverityNumber, std_to_otel
46+
from opentelemetry._logs.severity import SeverityNumber
4747

4848
__all__ = [
4949
"Logger",
@@ -55,5 +55,4 @@
5555
"get_logger_provider",
5656
"set_logger_provider",
5757
"SeverityNumber",
58-
"std_to_otel",
5958
]

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

Lines changed: 0 additions & 60 deletions
Original file line numberDiff line numberDiff line change
@@ -53,63 +53,3 @@ class SeverityNumber(enum.Enum):
5353
FATAL2 = 22
5454
FATAL3 = 23
5555
FATAL4 = 24
56-
57-
58-
_STD_TO_OTEL = {
59-
10: SeverityNumber.DEBUG,
60-
11: SeverityNumber.DEBUG2,
61-
12: SeverityNumber.DEBUG3,
62-
13: SeverityNumber.DEBUG4,
63-
14: SeverityNumber.DEBUG4,
64-
15: SeverityNumber.DEBUG4,
65-
16: SeverityNumber.DEBUG4,
66-
17: SeverityNumber.DEBUG4,
67-
18: SeverityNumber.DEBUG4,
68-
19: SeverityNumber.DEBUG4,
69-
20: SeverityNumber.INFO,
70-
21: SeverityNumber.INFO2,
71-
22: SeverityNumber.INFO3,
72-
23: SeverityNumber.INFO4,
73-
24: SeverityNumber.INFO4,
74-
25: SeverityNumber.INFO4,
75-
26: SeverityNumber.INFO4,
76-
27: SeverityNumber.INFO4,
77-
28: SeverityNumber.INFO4,
78-
29: SeverityNumber.INFO4,
79-
30: SeverityNumber.WARN,
80-
31: SeverityNumber.WARN2,
81-
32: SeverityNumber.WARN3,
82-
33: SeverityNumber.WARN4,
83-
34: SeverityNumber.WARN4,
84-
35: SeverityNumber.WARN4,
85-
36: SeverityNumber.WARN4,
86-
37: SeverityNumber.WARN4,
87-
38: SeverityNumber.WARN4,
88-
39: SeverityNumber.WARN4,
89-
40: SeverityNumber.ERROR,
90-
41: SeverityNumber.ERROR2,
91-
42: SeverityNumber.ERROR3,
92-
43: SeverityNumber.ERROR4,
93-
44: SeverityNumber.ERROR4,
94-
45: SeverityNumber.ERROR4,
95-
46: SeverityNumber.ERROR4,
96-
47: SeverityNumber.ERROR4,
97-
48: SeverityNumber.ERROR4,
98-
49: SeverityNumber.ERROR4,
99-
50: SeverityNumber.FATAL,
100-
51: SeverityNumber.FATAL2,
101-
52: SeverityNumber.FATAL3,
102-
53: SeverityNumber.FATAL4,
103-
}
104-
105-
106-
def std_to_otel(levelno: int) -> SeverityNumber:
107-
"""
108-
Map python log levelno as defined in https://docs.python.org/3/library/logging.html#logging-levels
109-
to OTel log severity number as defined here: https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/logs/data-model.md#field-severitynumber
110-
"""
111-
if levelno < 10:
112-
return SeverityNumber.UNSPECIFIED
113-
if levelno > 53:
114-
return SeverityNumber.FATAL4
115-
return _STD_TO_OTEL[levelno]

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

Lines changed: 66 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,6 @@
3535
SeverityNumber,
3636
get_logger,
3737
get_logger_provider,
38-
std_to_otel,
3938
)
4039
from opentelemetry.attributes import _VALID_ANY_VALUE_TYPES, BoundedAttributes
4140
from opentelemetry.context import get_current
@@ -358,7 +357,7 @@ class LogRecordProcessor(abc.ABC):
358357
"""
359358

360359
@abc.abstractmethod
361-
def emit(self, log_data: LogData):
360+
def on_emit(self, log_data: LogData):
362361
"""Emits the `LogData`"""
363362

364363
@abc.abstractmethod
@@ -402,9 +401,9 @@ def add_log_record_processor(
402401
with self._lock:
403402
self._log_record_processors += (log_record_processor,)
404403

405-
def emit(self, log_data: LogData) -> None:
404+
def on_emit(self, log_data: LogData) -> None:
406405
for lp in self._log_record_processors:
407-
lp.emit(log_data)
406+
lp.on_emit(log_data)
408407

409408
def shutdown(self) -> None:
410409
"""Shutdown the log processors one by one"""
@@ -476,8 +475,8 @@ def _submit_and_wait(
476475
for future in futures:
477476
future.result()
478477

479-
def emit(self, log_data: LogData):
480-
self._submit_and_wait(lambda lp: lp.emit, log_data)
478+
def on_emit(self, log_data: LogData):
479+
self._submit_and_wait(lambda lp: lp.on_emit, log_data)
481480

482481
def shutdown(self):
483482
self._submit_and_wait(lambda lp: lp.shutdown)
@@ -684,7 +683,7 @@ def emit(self, record: LogRecord):
684683
and instrumentation info.
685684
"""
686685
log_data = LogData(record, self._instrumentation_scope)
687-
self._multi_log_record_processor.emit(log_data)
686+
self._multi_log_record_processor.on_emit(log_data)
688687

689688

690689
class LoggerProvider(APILoggerProvider):
@@ -797,3 +796,63 @@ def force_flush(self, timeout_millis: int = 30000) -> bool:
797796
False otherwise.
798797
"""
799798
return self._multi_log_record_processor.force_flush(timeout_millis)
799+
800+
801+
_STD_TO_OTEL = {
802+
10: SeverityNumber.DEBUG,
803+
11: SeverityNumber.DEBUG2,
804+
12: SeverityNumber.DEBUG3,
805+
13: SeverityNumber.DEBUG4,
806+
14: SeverityNumber.DEBUG4,
807+
15: SeverityNumber.DEBUG4,
808+
16: SeverityNumber.DEBUG4,
809+
17: SeverityNumber.DEBUG4,
810+
18: SeverityNumber.DEBUG4,
811+
19: SeverityNumber.DEBUG4,
812+
20: SeverityNumber.INFO,
813+
21: SeverityNumber.INFO2,
814+
22: SeverityNumber.INFO3,
815+
23: SeverityNumber.INFO4,
816+
24: SeverityNumber.INFO4,
817+
25: SeverityNumber.INFO4,
818+
26: SeverityNumber.INFO4,
819+
27: SeverityNumber.INFO4,
820+
28: SeverityNumber.INFO4,
821+
29: SeverityNumber.INFO4,
822+
30: SeverityNumber.WARN,
823+
31: SeverityNumber.WARN2,
824+
32: SeverityNumber.WARN3,
825+
33: SeverityNumber.WARN4,
826+
34: SeverityNumber.WARN4,
827+
35: SeverityNumber.WARN4,
828+
36: SeverityNumber.WARN4,
829+
37: SeverityNumber.WARN4,
830+
38: SeverityNumber.WARN4,
831+
39: SeverityNumber.WARN4,
832+
40: SeverityNumber.ERROR,
833+
41: SeverityNumber.ERROR2,
834+
42: SeverityNumber.ERROR3,
835+
43: SeverityNumber.ERROR4,
836+
44: SeverityNumber.ERROR4,
837+
45: SeverityNumber.ERROR4,
838+
46: SeverityNumber.ERROR4,
839+
47: SeverityNumber.ERROR4,
840+
48: SeverityNumber.ERROR4,
841+
49: SeverityNumber.ERROR4,
842+
50: SeverityNumber.FATAL,
843+
51: SeverityNumber.FATAL2,
844+
52: SeverityNumber.FATAL3,
845+
53: SeverityNumber.FATAL4,
846+
}
847+
848+
849+
def std_to_otel(levelno: int) -> SeverityNumber:
850+
"""
851+
Map python log levelno as defined in https://docs.python.org/3/library/logging.html#logging-levels
852+
to OTel log severity number as defined here: https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/logs/data-model.md#field-severitynumber
853+
"""
854+
if levelno < 10:
855+
return SeverityNumber.UNSPECIFIED
856+
if levelno > 53:
857+
return SeverityNumber.FATAL4
858+
return _STD_TO_OTEL[levelno]

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -112,7 +112,7 @@ def __init__(self, exporter: LogExporter):
112112
self._exporter = exporter
113113
self._shutdown = False
114114

115-
def emit(self, log_data: LogData):
115+
def on_emit(self, log_data: LogData):
116116
if self._shutdown:
117117
_logger.warning("Processor is already shutdown, ignoring call")
118118
return
@@ -186,7 +186,7 @@ def __init__(
186186
"Log",
187187
)
188188

189-
def emit(self, log_data: LogData) -> None:
189+
def on_emit(self, log_data: LogData) -> None:
190190
return self._batch_processor.emit(log_data)
191191

192192
def shutdown(self):

opentelemetry-sdk/tests/logs/test_export.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -348,7 +348,7 @@ def test_emit_call_log_record(self):
348348
logger.addHandler(LoggingHandler(logger_provider=provider))
349349

350350
logger.error("error")
351-
self.assertEqual(log_record_processor.emit.call_count, 1)
351+
self.assertEqual(log_record_processor.on_emit.call_count, 1)
352352
log_record_processor.shutdown()
353353

354354
def test_with_multiple_threads(self): # pylint: disable=no-self-use
@@ -363,7 +363,7 @@ def test_with_multiple_threads(self): # pylint: disable=no-self-use
363363

364364
def bulk_emit(num_emit):
365365
for _ in range(num_emit):
366-
batch_processor.emit(EMPTY_LOG)
366+
batch_processor.on_emit(EMPTY_LOG)
367367

368368
total_expected_logs = 0
369369
with ThreadPoolExecutor(max_workers=69) as executor:
@@ -404,10 +404,10 @@ def test_logging_lib_not_invoked_in_batch_log_record_emit(self): # pylint: disa
404404
# If `emit` calls logging.log then this test will throw a maximum recursion depth exceeded exception and fail.
405405
try:
406406
with self.assertNoLogs(sdk_logger, logging.NOTSET):
407-
processor.emit(EMPTY_LOG)
407+
processor.on_emit(EMPTY_LOG)
408408
processor.shutdown()
409409
with self.assertNoLogs(sdk_logger, logging.NOTSET):
410-
processor.emit(EMPTY_LOG)
410+
processor.on_emit(EMPTY_LOG)
411411
finally:
412412
sdk_logger.removeHandler(handler)
413413

opentelemetry-sdk/tests/logs/test_handler.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -384,7 +384,7 @@ class FakeProcessor(LogRecordProcessor):
384384
def __init__(self):
385385
self.log_data_emitted = []
386386

387-
def emit(self, log_data: LogData):
387+
def on_emit(self, log_data: LogData):
388388
self.log_data_emitted.append(log_data)
389389

390390
def shutdown(self):

opentelemetry-sdk/tests/logs/test_multi_log_processor.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ def __init__(self, exporter, logs_list):
3838
self._log_list = logs_list
3939
self._closed = False
4040

41-
def emit(self, log_data):
41+
def on_emit(self, log_data):
4242
if self._closed:
4343
return
4444
self._log_list.append(
@@ -118,9 +118,9 @@ def test_on_emit(self):
118118
for mock in mocks:
119119
multi_log_record_processor.add_log_record_processor(mock)
120120
record = self.make_record()
121-
multi_log_record_processor.emit(record)
121+
multi_log_record_processor.on_emit(record)
122122
for mock in mocks:
123-
mock.emit.assert_called_with(record)
123+
mock.on_emit.assert_called_with(record)
124124
multi_log_record_processor.shutdown()
125125

126126
def test_on_shutdown(self):

0 commit comments

Comments
 (0)