import logging from pathlib import Path def build_logger(name: str, log_level: str = "INFO", log_file: Path | None = None) -> logging.Logger: logger = logging.getLogger(name) logger.setLevel(getattr(logging, log_level.upper(), logging.INFO)) if logger.handlers: return logger formatter = logging.Formatter("%(asctime)s | %(levelname)s | %(name)s | %(message)s") stream_handler = logging.StreamHandler() stream_handler.setFormatter(formatter) logger.addHandler(stream_handler) if log_file is not None: log_file.parent.mkdir(parents=True, exist_ok=True) file_handler = logging.FileHandler(log_file, encoding="utf-8") file_handler.setFormatter(formatter) logger.addHandler(file_handler) return logger