利用装饰器将被装饰函数的运行结果及其执行时间、用户等信息写入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")