Compare commits

..

2 Commits

2 changed files with 43 additions and 10 deletions

View File

@@ -68,7 +68,9 @@ def setup_logger(verbose: bool = False, log_file: Path | None = None) -> logging
logger.addHandler(error_handler) logger.addHandler(error_handler)
if log_file: if log_file:
if not file_handlers: for handler in file_handlers:
handler.close()
logger.removeHandler(handler)
log_file.parent.mkdir(parents=True, exist_ok=True) log_file.parent.mkdir(parents=True, exist_ok=True)
file_handler = logging.FileHandler(log_file, encoding="utf-8") file_handler = logging.FileHandler(log_file, encoding="utf-8")
file_handler.setLevel(logging.DEBUG) file_handler.setLevel(logging.DEBUG)

View File

@@ -87,3 +87,34 @@ def test_setup_logger_file_handler_lifecycle(tmp_path):
logger.removeHandler(handler) logger.removeHandler(handler)
for handler in original_handlers: for handler in original_handlers:
logger.addHandler(handler) logger.addHandler(handler)
def test_setup_logger_replaces_file_handler_when_path_changes(tmp_path):
logger = logging.getLogger("skywipe")
original_handlers = list(logger.handlers)
for handler in original_handlers:
logger.removeHandler(handler)
log_file1 = tmp_path / "skywipe1.log"
log_file2 = tmp_path / "skywipe2.log"
try:
setup_logger(verbose=False, log_file=log_file1)
file_handlers = [
handler for handler in logger.handlers
if isinstance(handler, logging.FileHandler)
]
assert len(file_handlers) == 1
assert file_handlers[0].baseFilename == str(log_file1)
setup_logger(verbose=False, log_file=log_file2)
file_handlers = [
handler for handler in logger.handlers
if isinstance(handler, logging.FileHandler)
]
assert len(file_handlers) == 1
assert file_handlers[0].baseFilename == str(log_file2)
finally:
for handler in list(logger.handlers):
logger.removeHandler(handler)
for handler in original_handlers:
logger.addHandler(handler)