""" Centralised logging configuration for BioLitAI-X. Import get_logger(name) in every module instead of logging.getLogger directly. """ import logging import sys from pathlib import Path from config import LOG_LEVEL, LOG_DIR def get_logger(name: str) -> logging.Logger: logger = logging.getLogger(name) if logger.handlers: return logger logger.setLevel(getattr(logging, LOG_LEVEL.upper(), logging.INFO)) fmt = logging.Formatter( "%(asctime)s %(levelname)-8s %(name)s %(message)s", datefmt="%Y-%m-%d %H:%M:%S", ) ch = logging.StreamHandler(sys.stdout) ch.setFormatter(fmt) logger.addHandler(ch) try: fh = logging.FileHandler(Path(LOG_DIR) / "biolita.log", encoding="utf-8") fh.setFormatter(fmt) logger.addHandler(fh) except Exception: pass return logger