在Python中使用装饰器记录函数执行信息
在软件开发过程中,了解函数的执行情况对于监控性能和调试错误非常重要。在Python中,我们可以使用装饰器来实现这一功能。下面是一个创建装饰器的例子,该装饰器可以记录函数的执行开始和结束时间,并在出现异常时记录错误信息。
import time
# 假设transfer_logger是一个已经定义好的日志工具
# 这里需要替换为实际的日志工具导入
def logger(func):
def decor(*args):
start_time = time.time()
# 使用日志工具记录函数开始执行的信息
transfer_logger.info(f"任务[{func.__name__}]开始进行")
try:
# 调用原始函数
func(*args)
end_time = time.time()
# 计算运行时长并记录
d_time = end_time - start_time
transfer_logger.info(
f"任务[{func.__name__}]完成,运行时长:{round(d_time, 3)}s"
)
except Exception as e:
# 如果出现异常,记录错误信息
transfer_logger.error(
f"任务[{func.__name__}]出现错误:{str(e)}", exc_info=True
)
return decor
您可以使用这个装饰器来增强任何函数,只需在函数定义前加上 @logger
。例如:
@logger
def user_transfer_task():
# 函数逻辑
pass
当 user_transfer_task
函数被调用时,无论它是否正常完成,我们都会在日志中看到开始和结束的信息,如果出现异常,错误详情也会被记录下来。
log结果