欢迎访问宙启技术站
智能推送

利用callWithLogger()函数在Python中生成函数调用的中文标题日志

发布时间:2024-01-17 23:30:45

在Python中,我们可以使用装饰器(Decorator)来为函数添加日志功能。为了生成函数调用的中文标题日志,我们可以编写一个名为callWithLogger()的装饰器函数。

下面是callWithLogger()函数的代码示例:

import logging

def callWithLogger(func):
    def wrapper(*args, **kwargs):
        # 获取函数的名称
        function_name = func.__name__
        # 生成中文标题日志
        logging.info(f"调用函数:{function_name}")
        try:
            # 执行函数
            result = func(*args, **kwargs)
            # 生成中文标题日志
            logging.info(f"函数调用成功:{function_name}")
            return result
        except Exception as e:
            # 生成中文标题日志
            logging.error(f"函数调用失败:{function_name}")
            raise e
    
    return wrapper

以上代码中,callWithLogger()函数是一个高阶函数,它接受一个函数作为参数,并返回一个被装饰的函数。被装饰的函数即wrapper()函数,它会在调用被装饰函数之前和之后生成相应的中文标题日志。

为了使用callWithLogger()装饰器,我们可以在需要添加日志的函数的定义前加上@callWithLogger。例如:

import logging

logging.basicConfig(level=logging.INFO)

@callWithLogger
def add(a, b):
    return a + b

@callWithLogger
def divide(a, b):
    return a / b

result1 = add(2, 3)
print(f"add(2, 3)的结果:{result1}")

result2 = divide(10, 5)
print(f"divide(10, 5)的结果:{result2}")

运行以上代码后,会在控制台中看到类似下面的日志输出:

INFO:root:调用函数:add
INFO:root:函数调用成功:add
INFO:root:调用函数:divide
INFO:root:函数调用成功:divide
add(2, 3)的结果:5
divide(10, 5)的结果:2.0

通过callWithLogger()装饰器,我们成功地为add()divide()函数生成了中文标题日志。在调用函数之前,会输出"调用函数:{函数名}"的日志信息;在函数正常执行结束后,会输出"函数调用成功:{函数名}"的日志信息。如果函数调用过程中发生异常,会输出"函数调用失败:{函数名}"的日志信息,并将异常继续抛出。

这样,我们就可以利用callWithLogger()函数在Python中生成函数调用的中文标题日志了。