51 lines
1.3 KiB
Python
51 lines
1.3 KiB
Python
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}</{color}> : {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")
|