@@ -154,6 +154,12 @@ def get_logs(
154
154
except Exception as ex : # pylint: disable=broad-except
155
155
log .warning ("Failed to get device managed object. %s" , ex )
156
156
157
+ # Log mqtt messages separately so it is easier to read/debug
158
+ try :
159
+ self .log_mqtt_messages ("#" , date_from )
160
+ except Exception as ex :
161
+ log .warning ("Failed to retrieve mqtt logs. %s" , ex , exc_info = True )
162
+
157
163
try :
158
164
# Get agent log files (if they exist)
159
165
log .info ("tedge agent logs: /var/log/tedge/agent/*" )
@@ -495,8 +501,7 @@ def _assert_mqtt_topic_messages(
495
501
)
496
502
497
503
messages = [
498
- bytes .fromhex (item ["payload_hex" ]).decode ("utf8" )
499
- # item["message"]["payload"]
504
+ bytes .fromhex (item ["payload_hex" ]).decode ("utf8" , errors = "replace" )
500
505
for item in items
501
506
]
502
507
@@ -512,6 +517,18 @@ def _assert_mqtt_topic_messages(
512
517
513
518
return messages
514
519
520
+ def log_mqtt_messages (self , topic : str = "#" , date_from : Union [datetime , float ] = None , ** kwargs ):
521
+ items = self .mqtt_match_messages (
522
+ topic = topic ,
523
+ date_from = date_from ,
524
+ ** kwargs ,
525
+ )
526
+ entries = [
527
+ f'{ item ["message" ]["tst" ].replace ("+0000" , "" ):32} { item ["message" ]["topic" ]:70} { bytes .fromhex (item ["payload_hex" ]).decode ("utf8" , errors = "replace" )} '
528
+ for item in items
529
+ ]
530
+ log .info ("---- mqtt messages ----\n %s" , "\n " .join (entries ))
531
+
515
532
@keyword ("Should Have MQTT Messages" )
516
533
def mqtt_should_have_topic (
517
534
self ,
0 commit comments