clean up slog closing

This commit is contained in:
Kevin Hester
2024-06-25 10:39:44 -07:00
parent c6561713db
commit 07fc991f4e
2 changed files with 14 additions and 5 deletions

View File

@@ -1108,9 +1108,10 @@ def common():
meter.v = v
meter.powerOn()
log_set = None
if args.slog_out:
# Setup loggers
LogSet(client, args.slog_out if args.slog_out != 'default' else None, meter)
log_set = LogSet(client, args.slog_out if args.slog_out != 'default' else None, meter)
have_tunnel = platform.system() == "Linux"
if (
@@ -1122,6 +1123,9 @@ def common():
except KeyboardInterrupt:
logging.info("Exiting due to keyboard interrupt")
if log_set:
log_set.close()
# don't call exit, background threads might be running still
# sys.exit(0)

View File

@@ -162,12 +162,17 @@ class LogSet:
else:
self.power_logger = None
# Store a lambda so we can find it again to unregister
self.atexit_handler = lambda: self.close()
atexit.register(self.close)
def close(self) -> None:
"""Close the log set."""
logging.info(f"Closing slogs in {self.dir_name}")
self.slog_logger.close()
if self.power_logger:
self.power_logger.close()
if self.slog_logger:
logging.info(f"Closing slogs in {self.dir_name}")
atexit.unregister(self.atexit_handler) # docs say it will silently ignore if not found
self.slog_logger.close()
if self.power_logger:
self.power_logger.close()
self.slog_logger = None