Skip to main content

Simplify the logging of incoming requests and outgoing responses.

Project description

logmiddleware

logmiddleware is a Python library designed for use with FastAPI to simplify the logging of incoming requests and outgoing responses. It includes a middleware component that adds essential information to logs, such as request and response details, and supports debugging features.

Features

  • Middleware for request and response logging: The library provides a middleware component, RouterLoggingMiddleware, to log incoming requests and outgoing responses. It includes features to capture request details, response information, and execution times.

  • Request ID generation: Automatically generates a unique request ID for each incoming request. If the request includes an x-api-request-id header, it uses that value; otherwise, it generates a new UUID.

  • Debugging support: Enables debugging of response bodies through the use of the api_debug flag. When enabled, the response body is included in the logs.

  • JSON logging configuration: Utilizes the python-json-logger library to configure JSON logging. This allows for structured and easily parsable log entries.

Installation

To install the library, use the following pip command:

pip install logmiddleware

Usage

Setting up middleware

import logging
from fastapi import FastAPI
from logmiddleware import RouterLoggingMiddleware, logging_config

# Configure JSON logging
logging.config.dictConfig(logging_config)

app = FastAPI()
# Add the middleware to your FastAPI app
app.add_middleware(
    RouterLoggingMiddleware,
    logger=logging.getLogger(__name__),  # Pass your logger instance
    api_debug=True,  # Set to True to enable debugging of response bodies
)

Accessing request ID in the called function

The execute_request method has been updated to set the request_id in the request.state. You can now access it in the called function using request.state.request_id. Here is an example:

# ...

@app.get("/example")
async def example_route(request: Request):
    # Accessing the request_id in the called function
    request_id = request.state.request_id
    return {"message": "Hello, world!", "request_id": request_id}

Configuration

The library relies on a logging configuration dictionary (logging_config) to set up JSON logging. Because of that, it includes a default logging configuration (logging_config), which you can import for easy setup. Ensure this configuration is properly set before adding the middleware to your FastAPI app.

Contributing

If you find any issues or have suggestions for improvements, please feel free to open an issue or create a pull request on the Git repository.

License

This project is licensed under the MIT 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

logmiddleware-0.0.4.tar.gz (4.2 kB view details)

Uploaded Source

Built Distribution

logmiddleware-0.0.4-py3-none-any.whl (4.9 kB view details)

Uploaded Python 3

File details

Details for the file logmiddleware-0.0.4.tar.gz.

File metadata

  • Download URL: logmiddleware-0.0.4.tar.gz
  • Upload date:
  • Size: 4.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.11.6

File hashes

Hashes for logmiddleware-0.0.4.tar.gz
Algorithm Hash digest
SHA256 faa4639c373dcbebaabb23d2cb851490b361bcd435dbf58c93189b9ea69c36c2
MD5 e3c6e392a0322babc53ec7d297bf2e51
BLAKE2b-256 3ce480bc4bca12a650ca687581285798abe6d8276ec73c3dd0251d15613f52a1

See more details on using hashes here.

File details

Details for the file logmiddleware-0.0.4-py3-none-any.whl.

File metadata

File hashes

Hashes for logmiddleware-0.0.4-py3-none-any.whl
Algorithm Hash digest
SHA256 364f657d5b5d4cf0f077fc18e0b464994b9693e668e58cf17e0b40f0970cc5c1
MD5 0c9d2feba0c6677cb84d64217b50a5c8
BLAKE2b-256 f25889afdb2082fbbaab75b1596498259b44fbe132207b825b2ec4b989d5e554

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