File tree 3 files changed +16
-1
lines changed
exporter/opentelemetry-exporter-otlp-proto-common
src/opentelemetry/exporter/otlp/proto/common/_internal/_log_encoder
3 files changed +16
-1
lines changed Original file line number Diff line number Diff line change @@ -7,6 +7,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
8
8
## Version 1.28.1/0.49b1 (2024-11-08)
9
9
10
+ - Fix crash exporting a log record with None body
11
+ ([ #4276 ] ( https://github.com/open-telemetry/opentelemetry-python/pull/4276 ) )
10
12
- Fix metrics export with exemplar and no context and filtering observable instruments
11
13
([ #4251 ] ( https://github.com/open-telemetry/opentelemetry-python/pull/4251 ) )
12
14
- Fix recursion error with sdk disabled and handler added to root logger
Original file line number Diff line number Diff line change @@ -48,13 +48,14 @@ def _encode_log(log_data: LogData) -> PB2LogRecord:
48
48
if log_data .log_record .trace_id == 0
49
49
else _encode_trace_id (log_data .log_record .trace_id )
50
50
)
51
+ body = log_data .log_record .body
51
52
return PB2LogRecord (
52
53
time_unix_nano = log_data .log_record .timestamp ,
53
54
observed_time_unix_nano = log_data .log_record .observed_timestamp ,
54
55
span_id = span_id ,
55
56
trace_id = trace_id ,
56
57
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 ,
58
59
severity_text = log_data .log_record .severity_text ,
59
60
attributes = _encode_attributes (log_data .log_record .attributes ),
60
61
dropped_attributes_count = log_data .log_record .dropped_attributes ,
Original file line number Diff line number Diff line change @@ -51,6 +51,18 @@ def test_encode(self):
51
51
sdk_logs , expected_encoding = self .get_test_logs ()
52
52
self .assertEqual (encode_logs (sdk_logs ), expected_encoding )
53
53
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
+
54
66
def test_dropped_attributes_count (self ):
55
67
sdk_logs = self ._get_test_logs_dropped_attributes ()
56
68
encoded_logs = encode_logs (sdk_logs )
You can’t perform that action at this time.
0 commit comments