""" Application logger for SmartTrip AI. Creates a daily rotating log file under logs/ and also writes to stdout. Call get_logger(name) from any module to get a named logger. """ import logging import os from datetime import datetime def get_logger(name: str = "smarttrip_ai") -> logging.Logger: """ Return a configured Logger instance. - File handler → logs/app_YYYYMMDD.log (DEBUG and above) - Stream handler → stdout (INFO and above) """ os.makedirs("logs", exist_ok=True) logger = logging.getLogger(name) # Avoid adding duplicate handlers when the same name is requested again if logger.handlers: return logger logger.setLevel(logging.DEBUG) formatter = logging.Formatter( fmt="%(asctime)s | %(levelname)-8s | %(name)s | %(message)s", datefmt="%Y-%m-%d %H:%M:%S", ) # Daily log file log_file = os.path.join("logs", f"app_{datetime.now().strftime('%Y%m%d')}.log") file_handler = logging.FileHandler(log_file, encoding="utf-8") file_handler.setLevel(logging.DEBUG) file_handler.setFormatter(formatter) # Console output stream_handler = logging.StreamHandler() stream_handler.setLevel(logging.INFO) stream_handler.setFormatter(formatter) logger.addHandler(file_handler) logger.addHandler(stream_handler) return logger