Skip to main content

Helper for starlette to add request id in logger

Project description

starlette-request-id

CI codecov pypi downloads versions license

starlette-request-id is a helper for starlette to add request id in logger.

Installation

starlette-request-id is available on PyPI. Use pip to install:

$ pip install starlette-request-id

Basic Usage

import httpx
import uvicorn
from starlette.applications import Starlette
from starlette.responses import PlainTextResponse
from starlette_request_id import REQUEST_ID_HEADER, RequestIdMiddleware, init_logger, request_id_ctx

LOGGING = {
    "version": 1,
    "disable_existing_loggers": 0,
    "formatters": {
        "default": {
            "format": "[%(asctime)s] %(levelname)s [%(request_id)s] %(name)s | %(message)s",
            "datefmt": "%d/%b/%Y %H:%M:%S",
        }
    },
    "handlers": {
        "stdout": {
            "level": "INFO",
            "class": "logging.StreamHandler",
            "formatter": "default",
        },
    },
    "loggers": {
        "": {
            "handlers": ["stdout"],
            "propagate": True,
            "level": "INFO",
        },
    },
}


def init_app():
    init_logger(LOGGING)

    app_ = Starlette()
    app_.add_middleware(RequestIdMiddleware)

    @app_.route("/")
    def success(request):
        httpx.post("https://www.example.org/", headers={REQUEST_ID_HEADER: request_id_ctx.get()})
        return PlainTextResponse("OK", status_code=200)

    return app_


app = init_app()

if __name__ == "__main__":
    uvicorn.run(
        app=app,
        log_config=LOGGING,
    )

curl 127.0.0.1:8000

    [17/Jan/2021 18:31:19] INFO [N/A] uvicorn.error | Started server process [576540]
    [17/Jan/2021 18:31:19] INFO [N/A] uvicorn.error | Waiting for application startup.
    [17/Jan/2021 18:31:19] INFO [N/A] uvicorn.error | Application startup complete.
    [17/Jan/2021 18:31:19] INFO [N/A] uvicorn.error | Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit)
    [17/Jan/2021 18:31:22] INFO [22395fa2-e296-420e-93a1-5537e1ba0a62] uvicorn.access | 127.0.0.1:50372 - "GET / HTTP/1.1" 200
    [17/Jan/2021 18:31:25] INFO [9ac6fa25-5048-4222-ac54-dd2c70e3e042] uvicorn.access | 127.0.0.1:50374 - "GET / HTTP/1.1" 200

License

starlette-request-id is developed and distributed under the Apache 2.0 license.

Reporting a Security Vulnerability

See our security policy.

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

starlette-request-id-1.2.1.tar.gz (8.1 kB view details)

Uploaded Source

Built Distribution

starlette_request_id-1.2.1-py3-none-any.whl (9.5 kB view details)

Uploaded Python 3

File details

Details for the file starlette-request-id-1.2.1.tar.gz.

File metadata

  • Download URL: starlette-request-id-1.2.1.tar.gz
  • Upload date:
  • Size: 8.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.11.10

File hashes

Hashes for starlette-request-id-1.2.1.tar.gz
Algorithm Hash digest
SHA256 d8cc85324fbc5a9e038e7e83bd5f0cb530e1f8f67194562b3f9538a596c4569b
MD5 16a8e657e039dc4e0edcaeeaa3222a50
BLAKE2b-256 cd1717a909b333eaf36316d00d1499c8ae082b75e91f9f612afff7a7df2e821a

See more details on using hashes here.

File details

Details for the file starlette_request_id-1.2.1-py3-none-any.whl.

File metadata

File hashes

Hashes for starlette_request_id-1.2.1-py3-none-any.whl
Algorithm Hash digest
SHA256 086750fa98bde27cb14dcbb55cd409f0e966b14234a5a33ac532f8bfb1ca6a39
MD5 69bde78b1ea55d85e41a8f07638769f5
BLAKE2b-256 24fc118f781479095106cb64aed1ae787940e410eb45dd10922acb0dc4ccc767

See more details on using hashes here.

Supported by

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