021_Python装饰器_案例_插入日志

利用装饰器将被装饰函数的运行结果及其执行时间、用户等信息写入log日志中

import logging
from functools import wraps

# 日志文件的配置
logging.basicConfig(
    level=logging.DEBUG,
    filename="message.log",
    filemode="a",
    format="%(asctime)s - %(pathname)s[line:%(lineno)d] - %(levelname)s: %(message)s"
)


# 1. 定义一个日志装饰器
def logger(func):
    """插入日志的装饰器"""
    # @wraps(func),用来保留func函数原有的函数名和帮助文档
    @wraps(func)
    def wrapper(*args, **kwargs):     # args, kwargs为形参,args是元组,kwargs是字典
        logging.debug("%s函数开始执行" % (func.__name__))
        result = func(*args, **kwargs)  # args, kwargs为实参,*args, **kwargs为解包
        logging.debug("%s函数结束执行" % (func.__name__))
        return result

    return wrapper

# 2. 装饰器,语法糖 @logger <==> login = logger(login)
@logger
def login(userName, passWod):
    if userName == "root" and passWod == "6666":
        print("LOGIN OK")
        logging.debug("%s LOGIN OK" % userName)
    else:
        print("LOGIN FAILED")
        logging.error("%s LOGIN FAILED" % userName)


if __name__ == '__main__':
    login("root", "westo")
发布了37 篇原创文章 · 获赞 0 · 访问量 5319

猜你喜欢

转载自blog.csdn.net/qq_21156327/article/details/103648414
今日推荐