From dedb0f59130dfc2a9485258c5b64a1011e640e90 Mon Sep 17 00:00:00 2001 From: alexion Date: Mon, 7 Sep 2026 14:47:37 -0400 Subject: [PATCH] refactor(clew): create log file on first write --- src/clew/clew.py | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/src/clew/clew.py b/src/clew/clew.py index 02b09fe..6db58e4 100644 --- a/src/clew/clew.py +++ b/src/clew/clew.py @@ -74,6 +74,15 @@ def get_folder(path: Path) -> Path: return path +class LazyFileHandler(logging.FileHandler): + def __init__(self, path: Path, encoding: str) -> None: + super().__init__(path, encoding=encoding, delay=True) + + def _open(self): + get_folder(Path(self.baseFilename).parent) + return super()._open() + + def relative_to(root: Path, path: Path) -> Path: return path.resolve().relative_to(root.resolve()) @@ -119,12 +128,12 @@ def extract_archive( def configure_logging(output_root: Path) -> None: log_level = logging.INFO timestamp = datetime.now(UTC).strftime("%Y%m%dT%H%M%SZ") - logs_dir = get_folder(output_root / "logs") + logs_dir = output_root / "logs" log_file = logs_dir / f"{logging.getLevelName(log_level)}-clew-{timestamp}.log" formatter = logging.Formatter("%(message)s") - file_handler = logging.FileHandler(log_file, encoding="utf-8") + file_handler = LazyFileHandler(log_file, encoding="utf-8") file_handler.setFormatter(formatter) stream_handler = logging.StreamHandler()