From c841f9199a06100c285ea20c3ab7a9c891099724 Mon Sep 17 00:00:00 2001 From: Joshua Davis Date: Sun, 5 Nov 2023 16:45:05 -0800 Subject: [PATCH] logging fixes (#817) Co-authored-by: Joshua Davis --- hammer/logging/logging.py | 7 +++++-- hammer/vlsi/driver.py | 3 +-- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/hammer/logging/logging.py b/hammer/logging/logging.py index 5cf19b3c4..1508a1624 100644 --- a/hammer/logging/logging.py +++ b/hammer/logging/logging.py @@ -5,6 +5,7 @@ from functools import reduce from enum import Enum from typing import Callable, Iterable, List, NamedTuple, Type, Optional +import atexit class Level(Enum): """ @@ -38,7 +39,6 @@ def with_default_callbacks(cls): cls.add_callback(cls.callback_buffering) return cls - class HammerVLSIFileLogger: """A file logger for HammerVLSILogging.""" @@ -51,6 +51,8 @@ def __init__(self, output_path: str, format_msg_callback: Optional[Callable[[Ful """ self._file = open(output_path, "a") self._format_msg_callback = format_msg_callback + # close file when code exits + atexit.register(self.close) def __enter__(self): return self @@ -59,7 +61,8 @@ def close(self) -> None: """ Close this file logger. """ - self._file.close() + if not self._file.closed: + self._file.close() def __exit__(self, exc_type, exc_value, traceback): self.close() diff --git a/hammer/vlsi/driver.py b/hammer/vlsi/driver.py index 9051826d0..8b2862bdd 100644 --- a/hammer/vlsi/driver.py +++ b/hammer/vlsi/driver.py @@ -65,12 +65,11 @@ def __init__(self, options: HammerDriverOptions, extra_project_config: dict = {} file_logger = HammerVLSIFileLogger(options.log_file) HammerVLSILogging.add_callback(file_logger.callback) self.log = HammerVLSILogging.context() # type: HammerVLSILoggingContext - + # Create a new hammer database. self.database = hammer_config.HammerDatabase() # type: hammer_config.HammerDatabase self.log.info("Loading hammer-vlsi libraries and reading settings") - # Store the run dir (this should already be canonicalized by the CLI driver). self.obj_dir = options.obj_dir # type: str