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

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

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

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
相关推荐
AIex-YH几秒前
发酵罐里点一盏灯:光发酵,正在重算微藻蛋白的成本账
运维·制造·策略模式
zzu123zsw1 分钟前
为什么 Python 做 Agent 总在并发中崩溃?拆解 Blockcell 在 Rust 下的 Host-Cell 隔离与自愈状态机
开发语言·python·rust·大模型·ai agent
jiangliushi65 分钟前
GPT-6.1 Sol 免费用:Python 读文件报 ‘gbk‘ codec can‘t decode?加一个参数就好
python·编码·1024程序员节
vibecoding775 分钟前
Kimi K3.1 Pro 发布:2.8 万亿参数、Terminal-Bench 超 GPT-6 Astra,定价砍到 Opus 5.5 一半
人工智能·1024程序员节
Margrop5 分钟前
容器显示 Up 4 周,网站却 530 了:Cloudflare Tunnel 被 QUIC 悄悄拖垮的一次排障
人工智能
Jsundoku9 分钟前
第六章 深度学习 -- 循环神经网络
人工智能·深度学习·循环神经网络·1024程序员节
用户144655468340112 分钟前
Spring AI Alibaba Agent 长流程栈溢出:从 Reactor 调用链到修复验证
人工智能
染指111020 分钟前
155.Agent-LangGraph-节点级重试策略
人工智能·langchain·1024程序员节·agents
jimmyleeee24 分钟前
Agent安全之一:Agent Goal Hijack(ASI01)----当智能体“正确地”执行了错误的目标
运维·网络·安全
餐赢计餐饮策划设计28 分钟前
如何判断国潮养生设计是否适合自己?
python·1024程序员节