# coding=utf8
import functools
from utils.logger_util import LogUtil
import inspect
logger = LogUtil.get_logger()
def calc_kpi(func_name):
"""
:param func_name:
:return:
"""
start_fmt = "-------------------开始:%s,函数名:%s-------------------"
end_fmt = "-------------------结束:%s,函数名:%s,计算结果是:%s-------------------"
param_value = "参数信息为:%s"
# params = "参数分别是:%s"
# p_values = "参数对应的值是:%s"
def decorator(func):
@functools.wraps(func)
def wrapper(*args, **kw):
logger.info(start_fmt % (func_name, func.__name__))
param_keys = inspect.signature(func).parameters.keys()
param_dict = dict(zip(param_keys, args))
logger.info(param_value % param_dict)
# logger.info(params % inspect.signature(func))
# 单个打印 args 时 因为是不定长的参数,需要转换成集合
# logger.info(p_values % (args,))
func_value = func(*args, **kw)
logger.info(end_fmt % (func_name, func.__name__, func_value))
# logger.info(end_fmt % (kpi_name, inspect.stack()[1][3]))
return func_value
return wrapper
return decorator