Skip to content

Commit 84874ee

Browse files
codefromthecryptaabmass
authored andcommitted
Support logs with no body (open-telemetry#4276)
1 parent 6f3008a commit 84874ee

File tree

3 files changed

+16
-1
lines changed

3 files changed

+16
-1
lines changed

CHANGELOG.md

+2
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
77

88
## Version 1.28.1/0.49b1 (2024-11-08)
99

10+
- Fix crash exporting a log record with None body
11+
([#4276](https://github.com/open-telemetry/opentelemetry-python/pull/4276))
1012
- Fix metrics export with exemplar and no context and filtering observable instruments
1113
([#4251](https://github.com/open-telemetry/opentelemetry-python/pull/4251))
1214
- Fix recursion error with sdk disabled and handler added to root logger

exporter/opentelemetry-exporter-otlp-proto-common/src/opentelemetry/exporter/otlp/proto/common/_internal/_log_encoder/__init__.py

+2-1
Original file line numberDiff line numberDiff line change
@@ -48,13 +48,14 @@ def _encode_log(log_data: LogData) -> PB2LogRecord:
4848
if log_data.log_record.trace_id == 0
4949
else _encode_trace_id(log_data.log_record.trace_id)
5050
)
51+
body = log_data.log_record.body
5152
return PB2LogRecord(
5253
time_unix_nano=log_data.log_record.timestamp,
5354
observed_time_unix_nano=log_data.log_record.observed_timestamp,
5455
span_id=span_id,
5556
trace_id=trace_id,
5657
flags=int(log_data.log_record.trace_flags),
57-
body=_encode_value(log_data.log_record.body),
58+
body=_encode_value(body) if body is not None else None,
5859
severity_text=log_data.log_record.severity_text,
5960
attributes=_encode_attributes(log_data.log_record.attributes),
6061
dropped_attributes_count=log_data.log_record.dropped_attributes,

exporter/opentelemetry-exporter-otlp-proto-common/tests/test_log_encoder.py

+12
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,18 @@ def test_encode(self):
5151
sdk_logs, expected_encoding = self.get_test_logs()
5252
self.assertEqual(encode_logs(sdk_logs), expected_encoding)
5353

54+
def test_encode_no_body(self):
55+
sdk_logs, expected_encoding = self.get_test_logs()
56+
for log in sdk_logs:
57+
log.log_record.body = None
58+
59+
for resource_log in expected_encoding.resource_logs:
60+
for scope_log in resource_log.scope_logs:
61+
for log_record in scope_log.log_records:
62+
log_record.ClearField("body")
63+
64+
self.assertEqual(encode_logs(sdk_logs), expected_encoding)
65+
5466
def test_dropped_attributes_count(self):
5567
sdk_logs = self._get_test_logs_dropped_attributes()
5668
encoded_logs = encode_logs(sdk_logs)

0 commit comments

Comments
 (0)