import logging import sys from pathlib import Path from datetime import datetime from pythonjsonlogger import jsonlogger LOGS_DIR = Path("artifacts/logs") LOGS_DIR.mkdir(parents=True, exist_ok=True) LOG_FILE = f"{datetime.now().strftime('%Y%m%d_%H%M%S')}.log" LOG_FILE_PATH = LOGS_DIR / LOG_FILE def get_logger(name: str, level: int = logging.INFO, json_format: bool = False) -> logging.Logger: logger = logging.getLogger(name) logger.setLevel(level) if logger.handlers: return logger if json_format: formatter = jsonlogger.JsonFormatter( '%(asctime)s %(name)s %(levelname)s %(message)s', datefmt='%Y-%m-%d %H:%M:%S' ) else: formatter = logging.Formatter( '[%(asctime)s] %(name)s - %(levelname)s - %(message)s', datefmt='%Y-%m-%d %H:%M:%S' ) file_handler = logging.FileHandler(LOG_FILE_PATH) file_handler.setFormatter(formatter) logger.addHandler(file_handler) console_handler = logging.StreamHandler(sys.stdout) console_handler.setFormatter(formatter) logger.addHandler(console_handler) return logger logger = get_logger(__name__)