From 5c95ca3998e63248eb7d1c218844362bb5be9d99 Mon Sep 17 00:00:00 2001 From: Carlos Chinchilla Date: Thu, 24 Mar 2022 15:00:02 -0700 Subject: pw_system: Log log drop reason when available Change-Id: I91fd3f9beb6e747ff0383aff8e4c61dffe557e4a Reviewed-on: https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/89041 Reviewed-by: Keir Mierle Reviewed-by: Armando Montanez Pigweed-Auto-Submit: Carlos Chinchilla Commit-Queue: Carlos Chinchilla --- pw_system/py/pw_system/device.py | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/pw_system/py/pw_system/device.py b/pw_system/py/pw_system/device.py index b99db21b4..1288f68b8 100644 --- a/pw_system/py/pw_system/device.py +++ b/pw_system/py/pw_system/device.py @@ -100,10 +100,9 @@ class Device: if error != Status.CANCELLED: self.listen_to_log_stream() - def _handle_log_drop_count(self, drop_count: int): - message = f'Dropped {drop_count} log' - if drop_count > 1: - message += 's' + def _handle_log_drop_count(self, drop_count: int, reason: str): + log_text = 'log' if drop_count == 1 else 'logs' + message = f'Dropped {drop_count} {log_text} due to {reason}' self._emit_device_log(logging.WARNING, '', '', '', message) def _check_for_dropped_logs(self, log_entries_proto: log_pb2.LogEntries): @@ -115,7 +114,7 @@ class Device: self._expected_log_sequence_id = ( log_entries_proto.first_entry_sequence_id + messages_received) if dropped_log_count > 0: - self._handle_log_drop_count(dropped_log_count) + self._handle_log_drop_count(dropped_log_count, 'loss at transport') elif dropped_log_count < 0: _LOG.error('Log sequence ID is smaller than expected') @@ -135,8 +134,10 @@ class Device: # Handle dropped count. if log_proto.dropped: - self._handle_log_drop_count(log_proto.dropped) - return + drop_reason = log_proto.message.decode("utf-8").lower( + ) if log_proto.message else 'enqueue failure on device' + self._handle_log_drop_count(log_proto.dropped, drop_reason) + continue self._emit_device_log(level, '', decoded_timestamp, log.module, log.message, **dict(log.fields)) -- cgit v1.2.3