Skip to main content

Flask extension that can parse and handle multiple types of request-id sent by request processors like Amazon ELB, Heroku or any multi-tier infrastructure as the one used for microservices.

Project description

Flask-Log-Request-Id

Flask-Log-Request-Id is an extension for Flask that can parse and handle the request-id sent by request processors like Amazon ELB, Heroku Request-ID or any multi-tier infrastructure as the one used at microservices. A common usage scenario is to inject the request_id in the logging system so that all log records, even those emitted by third party libraries, have attached the request_id that initiated their call. This can greatly improve tracing and debugging of problems.

Features

Flask-Log-Request-Id provides the current_request_id() function which can be used at any time to get the request id of the initiated execution chain. It also comes with log filter to inject this information on log events as also an extension to forward the current request id into Celery’s workers.

Example: Parse request id and send it to to logging

In the following example, we will use the RequestIDLogFilter to inject the request id on all log events, and a custom formatter to print this information. If all these sounds unfamiliar please take a look at python logging system

import logging
import logging.config
from random import randint
from flask import Flask
from flask_log_request_id import RequestID, RequestIDLogFilter

def generic_add(a, b):
    """Simple function to add two numbers that is not aware of the request id"""
    logging.debug('Called generic_add({}, {})'.format(a, b))
    return a + b

app = Flask(__name__)
RequestID(app)

# Setup logging
handler = logging.StreamHandler()
handler.setFormatter(
    logging.Formatter("%(asctime)s - %(name)s - level=%(levelname)s - request_id=%(request_id)s - %(message)s"))
handler.addFilter(RequestIDLogFilter())  # << Add request id contextual filter
logging.getLogger().addHandler(handler)


@app.route('/')
def index():
    a, b = randint(1, 15), randint(1, 15)
    logging.info('Adding two random numbers {} {}'.format(a, b))
    return str(generic_add(a, b))

Installation

The easiest way to install it is using pip from PyPI

pip install flask-log-request-id

License

See the LICENSE file for license rights and limitations (MIT).

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

flask_3_log_request_id-0.11.1.tar.gz (9.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

Flask_3_Log_Request_ID-0.11.1-py3-none-any.whl (8.3 kB view details)

Uploaded Python 3

File details

Details for the file flask_3_log_request_id-0.11.1.tar.gz.

File metadata

  • Download URL: flask_3_log_request_id-0.11.1.tar.gz
  • Upload date:
  • Size: 9.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/5.1.1 CPython/3.12.6

File hashes

Hashes for flask_3_log_request_id-0.11.1.tar.gz
Algorithm Hash digest
SHA256 13ac27ff4c36c2d5e15ce634ce56cfee7dbf56e119d46e12fb1f86f6b428296a
MD5 a512bff71c21e02bb8888a84775f6854
BLAKE2b-256 e3e68c390f1ed4762767f7024704a39afcbf023457915b1e2db90b33447f07ff

See more details on using hashes here.

File details

Details for the file Flask_3_Log_Request_ID-0.11.1-py3-none-any.whl.

File metadata

File hashes

Hashes for Flask_3_Log_Request_ID-0.11.1-py3-none-any.whl
Algorithm Hash digest
SHA256 9d95b4d009f5b504200d4fdeb60f37fa3232d693f6f991653707ecbccd6e8283
MD5 f6de306e2c9c3e4be10148a0d20a9e77
BLAKE2b-256 a635c1fd02fceb60e870e8a6266dd7ff3eb1e41401b4e9031bb9269e33b4d9ac

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page