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