Skip to content

Commit 340d1e0

Browse files
fix: map Python CRITICAL log level to OTel FATAL severity text in contrib handler
The OTel specification defines the severity text for the highest severity range as "FATAL", but the contrib logging handler was passing through Python's native "CRITICAL" level name unchanged. This mirrors the fix made in open-telemetry/opentelemetry-python#5011 for the SDK handler. Related: open-telemetry/opentelemetry-python#4984
1 parent 822cd77 commit 340d1e0

2 files changed

Lines changed: 12 additions & 6 deletions

File tree

instrumentation/opentelemetry-instrumentation-logging/src/opentelemetry/instrumentation/logging/handler.py

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -188,10 +188,16 @@ def _translate(self, record: logging.LogRecord) -> LogRecord:
188188
else:
189189
body = record.getMessage()
190190

191-
# related to https://github.com/open-telemetry/opentelemetry-python/issues/3548
192-
# Severity Text = WARN as defined in https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/logs/data-model.md#displaying-severity.
193-
level_name = (
194-
"WARN" if record.levelname == "WARNING" else record.levelname
191+
# Map Python log level names to OTel severity text as defined in
192+
# https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/logs/data-model.md#displaying-severity
193+
# Python "WARNING" -> OTel "WARN" (see open-telemetry/opentelemetry-python#3548)
194+
# Python "CRITICAL" -> OTel "FATAL" (see open-telemetry/opentelemetry-python#4984)
195+
_python_to_otel_severity_text = {
196+
"WARNING": "WARN",
197+
"CRITICAL": "FATAL",
198+
}
199+
level_name = _python_to_otel_severity_text.get(
200+
record.levelname, record.levelname
195201
)
196202

197203
return LogRecord(

instrumentation/opentelemetry-instrumentation-logging/tests/test_handler.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -357,7 +357,7 @@ def test_log_record_trace_correlation(self):
357357
record.log_record.body,
358358
"Critical message within span",
359359
)
360-
self.assertEqual(record.log_record.severity_text, "CRITICAL")
360+
self.assertEqual(record.log_record.severity_text, "FATAL")
361361
self.assertEqual(
362362
record.log_record.severity_number,
363363
SeverityNumber.FATAL,
@@ -390,7 +390,7 @@ def test_log_record_trace_correlation_deprecated(self):
390390
self.assertEqual(
391391
record.log_record.body, "Critical message within span"
392392
)
393-
self.assertEqual(record.log_record.severity_text, "CRITICAL")
393+
self.assertEqual(record.log_record.severity_text, "FATAL")
394394
self.assertEqual(
395395
record.log_record.severity_number, SeverityNumber.FATAL
396396
)

0 commit comments

Comments
 (0)