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

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

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

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
相关推荐
艾莉丝努力练剑几秒前
【Linux网络】Linux 网络编程:传输层TCP(四)
linux·运维·服务器·网络·tcp/ip·http
周易宅几秒前
Cladue Code自动升级2.1.156无法使用,回退到2.1.153并禁止自动升级,可用稳定版本2.1.153
ai·claude code
weixin_BYSJ19871 分钟前
springboot鹿邑县旅游网站99312(源码+文档)
java·javascript·spring boot·python·django·flask·php
深邃-2 分钟前
【Web安全】-10-网站关键信息收集:目录扫描的概念,工具目录扫描(内含御剑,FindSomething安装链接),网站服务器收集,操作系统判断
运维·服务器·安全·web安全·http·网络安全
H Journey2 分钟前
python包和项目管理工具uv、conda介绍
python·conda·uv
碳基硅坊3 分钟前
Qwen3.6-27B 本地部署三大工具:Ollama、LM Studio、llama.cpp 谁更快?
人工智能·llama·大模型部署
AOwhisky4 分钟前
Ceph系列第四期:Ceph块存储(RBD)精讲
linux·运维·笔记·ceph·云计算·rbd
Shadow(⊙o⊙)5 分钟前
库的制作与原理2.0---动静态链接,main全解析,CPU在执行文件时的作用,GOT表。
linux·运维·服务器
树獭非懒8 分钟前
AI Agent 入门:理论、原理与5分钟代码实战
人工智能·llm·agent
前沿科技说i5 小时前
2026年AI大模型API中转站:主流服务商性能与成本
人工智能