使用callWithLogger()函数实现Python中的函数调用日志追踪
发布时间:2024-01-17 23:28:21
在Python中,可以通过装饰器函数来实现函数调用的日志追踪。我们可以定义一个装饰器函数callWithLogger,它接受一个函数作为参数,并返回一个新的函数,这个新函数会在每次调用被装饰的函数时打印一条日志。
下面是一个实现callWithLogger的例子:
import logging
import functools
def callWithLogger(func):
@functools.wraps(func)
def wrapper(*args, **kwargs):
logging.info("Calling {} with arguments: {} {}".format(func.__name__, args, kwargs))
result = func(*args, **kwargs)
logging.info("Function {} returned {}".format(func.__name__, result))
return result
return wrapper
在这个例子中,我们首先导入了logging模块,用于打印日志信息。然后,定义了一个装饰器函数callWithLogger,它接受一个函数作为参数,并返回一个新的函数wrapper。
在wrapper函数中,我们首先打印一条日志,显示被装饰函数的名字和参数。然后,调用被装饰的函数,并将返回值保存在result变量中。最后,再打印一条日志,显示被装饰函数的名字和返回值。最后,返回result。
下面是一个使用callWithLogger装饰器的例子:
@callWithLogger
def add(a, b):
return a + b
@callWithLogger
def multiply(a, b):
return a * b
result1 = add(1, 2)
result2 = multiply(3, 4)
print("Result of add: ", result1)
print("Result of multiply: ", result2)
在这个例子中,我们定义了两个函数add和multiply,并使用callWithLogger装饰器进行装饰。当我们调用add和multiply函数时,装饰器会自动打印相应的日志信息。最后,我们打印出返回的结果。
运行以上代码,输出如下:
Calling add with arguments: (1, 2) {}
Function add returned 3
Calling multiply with arguments: (3, 4) {}
Function multiply returned 12
Result of add: 3
Result of multiply: 12
可以看到,每次调用被装饰的函数时,都会打印相应的日志信息,包括函数名、参数和返回值。这样,我们就可以通过装饰器函数来方便地追踪函数调用的日志。
