import logging import os from logging.handlers import RotatingFileHandler from from_root import from_root from datetime import datetime LOG_DIR = 'logs' # LOG_FILE = f"{datetime.now().strftime('%m_%d_%Y_%H_%M_%S')}.log" LOG_FILE="LOG.log" MAX_LOG_SIZE = 5 * 1024 * 1024 # 5 MB BACKUP_COUNT = 3 # Number of backup log files to keep # construct log file path log_dir_path=os.path.join(from_root(),LOG_DIR) os.makedirs(log_dir_path,exist_ok=True) log_file_path=os.path.join(log_dir_path,LOG_FILE) def configure_logger(): logger=logging.getLogger() logger.setLevel(logging.DEBUG) # Defining formate formater = logging.Formatter("[ %(asctime)s ] %(name)s - %(levelname)s - %(message)s") # file handleing with rotation file_handler=RotatingFileHandler(log_file_path, maxBytes=MAX_LOG_SIZE, backupCount=BACKUP_COUNT) file_handler.setFormatter(formater) file_handler.setLevel(logging.DEBUG) console_handler=logging.StreamHandler() console_handler.setFormatter(formater) console_handler.setLevel(logging.INFO) # Ensure console output uses UTF-8 to prevent character mapping errors on Windows if hasattr(console_handler.stream, 'reconfigure'): console_handler.stream.reconfigure(encoding='utf-8') logger.addHandler(file_handler) logger.addHandler(console_handler) # return logger configure_logger()