A FastAPI middleware for logging requests and responses in NDJSON format
Project description
FastAPI-Logger
FastAPI-Logger is a middleware that provides easy-to-use request and response logging for FastAPI applications. It supports log rotation, custom log directory, and handles sensitive data securely by redacting sensitive headers.
Features
- Logs all incoming requests and outgoing responses.
- Supports log rotation with customizable file size and backup count.
- Handles sensitive data by redacting headers like
Authorization. - Outputs logs in JSON format for easy integration with log management tools.
- Flexible configuration for log directory and file size.
Installation
Prerequisites
- Python 3.11 or higher
- FastAPI framework
Project Setup
fastapi-logger/
├── app/
│ ├── __init__.py
│ ├── main.py # FastAPI entry point
│ ├── middleware/
│ │ ├── __init__.py
│ │ ├── fastapi_logging_middleware.py # Middleware implementation
├── tests/
│ ├── __init__.py
│ ├── test_logging_middleware.py # Unit tests for logging middleware
├── requirements.txt # Required Python packages
├── README.md # Project documentation
├── LICENSE # License file
Here's how to set up the project:
- Clone the repository:
git clone https://github.com/yourusername/fastapi-logger.git
- Set up the virtual environment:
cd fastapi-logger
python -m venv .venv
- Activate the virtual environment:
source .venv/bin/activate
- Install the project dependencies:
pip install -r requirements.txt
Usage
To use FastAPI-Logger in your FastAPI app & configure the parameters,
from fastapi import FastAPI
from .middleware.fastapi_logging_middleware import RequestResponseLoggingMiddleware
import os
# Create logs directory if it doesn't exist
os.makedirs("logs/request_response_logs", exist_ok=True)
app = FastAPI()
app.add_middleware(
RequestResponseLoggingMiddleware,
log_dir=os.path.join("logs", "request_response_logs"), # Directory for log files
max_mbytes=8, # 8 MB max file size
backup_count=3, # Keep up to 3 rotated files
)
@app.get("/")
async def root():
return {"message": "Hello World"}
Then run the app using uvicorn app.main:app --reload
Configuration Parameters
| Parameter | Description | Default Value |
|---|---|---|
log_dir |
Directory to store log files | app_logs |
max_mbytes |
Maximum size of a log file in Mega bytes before rotation | 8 (8 MB) |
backup_count |
Number of rotated files to retain | 5 |
Support
For any questions or issues, feel free to open an issue on the GitHub repository.
License
This project is licensed under the MIT License. See the LICENSE file for details.
Contributing
Contributions are welcome! Please see the CONTRIBUTING.md for guidelines on how to submit improvements and bug fixes. Also, please see the CODE_OF_CONDUCT.md.
Author
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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file fastapi_ndjson_logger-0.1.2.tar.gz.
File metadata
- Download URL: fastapi_ndjson_logger-0.1.2.tar.gz
- Upload date:
- Size: 7.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.0.1 CPython/3.12.4
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
85acd30d30412abf6259cd3b61676a7fd319d19d43250f8b8762387c16cbc22e
|
|
| MD5 |
f142aeeea0ef1dc8d8aafb105db1afa9
|
|
| BLAKE2b-256 |
8baf201b923cfe9c673dae338049514b29f2cc12b1687250f148fba620c545de
|
File details
Details for the file fastapi_ndjson_logger-0.1.2-py3-none-any.whl.
File metadata
- Download URL: fastapi_ndjson_logger-0.1.2-py3-none-any.whl
- Upload date:
- Size: 5.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.0.1 CPython/3.12.4
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
521ea3ecd394bcf1dc079cc1fd45803c17449dfab8430af1391580370ce18b31
|
|
| MD5 |
66a16e535d4e6ebf2f1d343d7fc8534c
|
|
| BLAKE2b-256 |
dbf1d81793619ef18bfef6ea791de4689f6d4f9dcc3647bb8ef49d7b6d8f933e
|