from __future__ import annotations import logging from datetime import date from pathlib import Path def configure_logging(logs_dir: Path, component: str) -> logging.Logger: logs_dir.mkdir(parents=True, exist_ok=True) logger = logging.getLogger(f"bakrest.{component}") logger.setLevel(logging.INFO) logger.handlers.clear() log_path = logs_dir / f"{date.today().isoformat()}-{component}.log" formatter = logging.Formatter( "%(asctime)s %(levelname)s [%(name)s] %(message)s", datefmt="%Y-%m-%d %H:%M:%S", ) file_handler = logging.FileHandler(log_path, encoding="utf-8") file_handler.setFormatter(formatter) logger.addHandler(file_handler) stream_handler = logging.StreamHandler() stream_handler.setFormatter(formatter) logger.addHandler(stream_handler) return logger def close_logger(logger: logging.Logger) -> None: for handler in list(logger.handlers): handler.flush() handler.close() logger.removeHandler(handler)