Skip to main content

Helper for starlette to add request id in logger

Project description

https://github.com/bigbag/starlette-request-id/workflows/CI/badge.svg https://img.shields.io/pypi/v/starlette-request-id.svg

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 uvicorn
from starlette.applications import Starlette
from starlette.responses import PlainTextResponse
from starlette_request_id import RequestIdMiddleware, init_logger

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):
        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.

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-0.3.1.tar.gz (9.0 kB view hashes)

Uploaded Source

Built Distribution

starlette_request_id-0.3.1-py3-none-any.whl (11.1 kB view hashes)

Uploaded Python 3

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