import os
import sys

from loguru import logger

from app.config import config
from app.utils import utils


def __init_logger():
    _log_file = utils.storage_dir("logs/server.log")
    _lvl = config.log_level
    root_dir = os.path.dirname(os.path.dirname(os.path.dirname(os.path.realpath(__file__))))

    def format_record(record):
        # 获取日志记录中的文件全路径
        file_path = record["file"].path
        # 将绝对路径转换为相对于项目根目录的路径
        relative_path = os.path.relpath(file_path, root_dir)
        # 更新记录中的文件路径
        record["file"].path = f"./{relative_path}"
        # 返回修改后的格式字符串
        # 您可以根据需要调整这里的格式
        _format = '<green>{time:%Y-%m-%d %H:%M:%S}</> | ' + \
                  '<level>{level}</> | ' + \
                  '"{file.path}:{line}":<blue> {function}</> ' + \
                  '- <level>{message}</>' + "\n"
        return _format

    logger.remove()

    logger.add(
        sys.stdout,
        level=_lvl,
        format=format_record,
        colorize=True,
    )

    logger.add(
        _log_file,
        level=_lvl,
        format=format_record,
        rotation="00:00",
        retention="3 days",
        backtrace=True,
        diagnose=True,
        enqueue=True,
    )


__init_logger()
