import sys import os from datetime import datetime from loguru import logger from utils.config import Config logger.remove() LevelList = ["ERROR", "WARNING", "INFO", "DEBUG"] CodeColorDict = {"ERROR": "red", "WARNING": "yellow", "INFO": "green", "DEBUG": "blue"} def custom_format(record): color = CodeColorDict[record["level"].name] return f"<{color}>{record['level'].name} : {record['message']}\n" logger.add(sys.stdout, format=custom_format, colorize=True, level=Config.LogLevel) def get_new_log_path(): today = datetime.now().strftime("%Y-%m-%d") log_dir = "logs" os.makedirs(log_dir, exist_ok=True) count = 1 while True: filename = f"{today}-{count}.log" filepath = os.path.join(log_dir, filename) if not os.path.exists(filepath): return filepath count += 1 log_file_path = get_new_log_path() logger.add(log_file_path, level=Config.LogLevel, format="{time:YYYY-MM-DD HH:mm:ss} | {level} | {message}") def Log(msg, types): if types in CodeColorDict and LevelList.index(types) <= LevelList.index(Config.LogLevel): getattr(logger, types.lower())(msg) def Error(msg): Log(msg, "ERROR") def Warn(msg): Log(msg, "WARNING") def Info(msg): Log(msg, "INFO") def Debug(msg): Log(msg, "DEBUG")