Я хочу обрабатывать вход в систему каждого запроса в моем Flask API. Я написал сценарии на manage.py
для обработки success log
, а также Exception 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()
Мои вопросы:
- Это правильный путь? или Предложите лучший способ в зависимости от производительности.
- можно ли получить
AWS API gateway
идентификатор запроса через этот request.headers.get('X-Request-ID')
?