使用装饰器实现自动化日志系统

使用装饰器实现自动化日志系统

使用装饰器实现自动化日志系统的示例代码如下:

python 复制代码
import logging
from functools import wraps

def log_function(func):
    @wraps(func)
    def wrapper(*args, **kwargs):
        logging.info(f"调用函数:{func.__name__}")
        result = func(*args, **kwargs)
        logging.info(f"函数执行完成:{func.__name__},结果为:{result}")
        return result
    return wrapper

@log_function
def 加法(a, b):
    return a + b

@log_function
def 乘法(a, b):
    return a * b

logging.basicConfig(level=logging.INFO)

print(加法(2, 3))
print(乘法(4, 5))

在这个示例中,我们定义了一个装饰器 log_function,它记录函数调用前的和后的信息。@wraps(func) 用于保留原始函数的元数据(名称、文档字符串等)。

然后,我们将这个装饰器应用于两个函数:加法乘法。当这些函数被调用时,它们将被包围在 logging 函数中。

输出结果将是:

python 复制代码
INFO:root:调用函数:加法
INFO:root:函数执行完成:加法,结果为:5
INFO:root:调用函数:乘法
INFO:root:函数执行完成:乘法,结果为:20
相关推荐
Raas10011 分钟前
MAI Gateway(魔芋企业级AI网关)技术揭秘:AI网关支持哪些模型?从原理到落地
大数据·人工智能·网关·gateway·mai gateway·企业级产品
考虑考虑1 小时前
docker compose V2版本新属性
运维·后端·自动化运维
AlanBruce2 小时前
摩尔信使MThings功能综述与应用使用指南
linux·自动化·plc·mthings·摩尔信使
qq5918406852 小时前
uiautomator2自动化安卓手机操作
python
豪气的程序猿3 小时前
电商图片工作流怎么选?Lingko AI 对比折叠键盘主图与详情页
人工智能
80s7773 小时前
动态代理和静态代理的区别,动态代理怎么提高网络安全性
python
小小的木头人3 小时前
Ubuntu Samba修改端口绕过445封禁挂载
运维·ubuntu
小刘快学习3 小时前
把 AI 账单拆到部门:企业 AI 网关的精准分账思路
人工智能
米小虾3 小时前
你让监控模型读的思维链,可能是攻击者写好的剧本
人工智能
deepseek233 小时前
Iris 开源搜索智能体拆解:35B 与 397B 中文仅差 0.3 分,上下文管理胜过堆参数
人工智能·ai agent·开源模型