#使用日志的目的是为了只使用一个接口就能对所有代码进行统一的管理。
# coding=utf-8
"""踪打印接口信息."""
from flask import current_app, request
from functools import wraps
import logging
logger = logging.getLogger("oss-backend")
def api_trace():
"""打印接口的请求和响应信息,方便调试和问题排查."""
def decorator(apiFunc):
@wraps(apiFunc)
def decorated_function(*args, **kwargs):
"""追踪打印接口的输入输出."""
logger.info('enter {}'.format(apiFunc.__name__))
logger.info('args: {}'.format(request.args.to_dict()))
logger.info('json: {}'.format(request.json))
logger.info('form: {}'.format(request.form.to_dict()))
resp, status_code = apiFunc(*args, **kwargs)
logger.info('exit {}'.format(apiFunc.__name__))
logger.info('return status_code: {}'.format(status_code))
logger.info('return data: {}'.format(str(resp)))
return resp
return decorated_function
return decorator
装饰器使用
@app.route("/")
@api_trace()
def hello():
return "hello"