import functools
import logging
import os
import time

def get_logs():
    logger = logging.getLogger()
    logger.setLevel(level=logging.DEBUG)
    log_name = time.strftime("%Y_%m_%d_%H_%M_%S", time.localtime(time.time())) + ".log"
    log_dir = os.path.join(os.path.join(os.path.dirname(__file__), "report"), "result_log")
    log_path = os.path.join(log_dir, log_name)
    file_handler = logging.FileHandler(log_path, mode="a", encoding="utf-8")
    log_format = logging.Formatter('%(asctime)s - %(levelname)s: %(message)s')
    file_handler.setFormatter(log_format)
    logger.addHandler(file_handler)
    return logger
log = get_logs()

def log_decorator(func_name):
    @functools.wraps(func_name)
    def inner(*arg, **kwargs):
        try:
            log.info(f"执行的功能名称为:{func_name.__name__}, 功能所在的文件为:{func_name.__code__.co_filename}, 所在的行为:{func_name.__code__.co_firstlineno}")
            value = func_name(*arg, **kwargs)
        except Exception as e:
            log.error(f"执行的功能名称为:{func_name.__name__}, 功能所在的文件为:{func_name.__code__.co_filename}, 所在的行为:{func_name.__code__.co_firstlineno}报错,错误为:{e}")
            raise e
        else:
            return value
    return inner