Skip to content

Commit 5eb9ed7

Browse files
committed
Merge branch 'feature/flush-logs' into testing
2 parents 8a77322 + 0b6c460 commit 5eb9ed7

File tree

1 file changed

+13
-0
lines changed

1 file changed

+13
-0
lines changed

runusb/__main__.py

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -283,6 +283,16 @@ def cleanup(self) -> None:
283283
# The process did not exit after 5 seconds, so kill it.
284284
self._send_signal(signal.SIGKILL)
285285

286+
# Ensure logs have finished writing
287+
self.log_thread.join()
288+
289+
# Explicitly close handler before removing it
290+
self.handler.close()
291+
USERCODE_LOGGER.removeHandler(self.handler)
292+
293+
# Sync filesystems before reporting status
294+
os.sync()
295+
286296
def close(self) -> None:
287297
self.cleanup()
288298
LED_CONTROLLER.set_status(LedStatus.NoUSB)
@@ -321,6 +331,9 @@ def _setup_logging(self, log_dir: str) -> None:
321331
os.path.join(log_dir, LOG_NAME),
322332
mode='w', # Overwrite the log file
323333
)
334+
# Write through to avoid buffering the log file since the USB might be
335+
# removed at any time
336+
self.handler.stream.reconfigure(write_through=True)
324337
REL_TIME_FILTER.reset_time_reference() # type: ignore[union-attr]
325338
self.handler.setFormatter(TieredFormatter(
326339
fmt='[%(reltime)08.3f - %(levelname)s] %(message)s',

0 commit comments

Comments
 (0)