针对Flask API中的每个请求全局登录`manage.py`

时间:2020-03-19 04:07:50

标签: python flask aws-api-gateway

我想处理Flask API中每个请求的登录信息。我已经在manage.py中编写了用于处理success logException log的脚本。

这是我的manage.py文件:

"""Manage all command related to the micro-service."""
import traceback

from flask import request
from app import app, manager

@app.after_request
def after_request(response):
    """ Logging after every request. """
    # This avoids the duplication of registry in the log,
    # since that 500 is already logged via @app. error handler.
    request_id = request.headers.get('X-Request-ID')  # event['requestContext']['requestId']
    if response.status_code != 500:
        app.logger.info(
            "%s [%s] %s %s",
            request.remote_addr,
            datetime.utcnow().strftime("%d/%b/%Y:%H:%M:%S.%f")[:-3],
            request.user_agent,
            request_id
        )
    return response


@app.errorhandler(Exception)
def exceptions():
    """ Logging after every Exception.
        Reference url github.com/sivel/flask-lambda
    """
    tb = traceback.format_exc()
    request_id = request.headers.get('X-Request-ID')  # event['requestContext']['requestId']
    app.logger.error(
        "%s [%s] %s %s %s",
        request.remote_addr,
        datetime.utcnow().strftime("%d/%b/%Y:%H:%M:%S.%f")[:-3],
        request.user_agent,
        tb,
        request_id
    )
    return request


if __name__ == '__main__':
    manager.run()

我的问题:

  1. 这是正确的方法吗?或根据效果建议更好的方法。
  2. 我可以通过此AWS API gateway获得request.headers.get('X-Request-ID')的请求ID吗?

0 个答案:

没有答案