Framework-agnostic HTTP logger with payload masking
Project description
🕵️♂️ BlackBox Logger
A universal request/response logger for Django, Flask, FastAPI, and other Python apps.
Automatically logs requests and responses, user info, IP address, and more — with masked sensitive data — into a log file and SQLite database.
🚀 Features
- ✅ Logs all HTTP requests and responses
- ✅ Logs to both
blackbox.logfile and SQLite DB (blackbox_logs.db) - ✅ Automatically masks sensitive fields (e.g.,
password,token, etc.) - ✅ Logs user (if available), IP address, and user agent
- ✅ Skips HTML content in logs to avoid noise
- ✅ Works out-of-the-box in Django
- ⚙️ Easy integration in Flask and FastAPI
📦 Installation
pip install blackbox-logger
Or install directly from GitHub:
pip install git+https://github.com/avi9r/blackbox_logger.git
📁 Logs
- After running, you’ll find:
📄 log/blackbox.log — clean file logs
🗃 log/blackbox_logs.db — SQLite DB (table: logs)
⚙️ Usage
🟩 Django
- Add middleware:
your_project/middleware.py
from django.utils.deprecation import MiddlewareMixin
from blackbox_logger.logger import HTTPLogger
logger = HTTPLogger()
class BlackBoxLoggerMiddleware(MiddlewareMixin):
def process_request(self, request):
logger.log_request(
request.method,
request.path,
dict(request.headers),
request.body,
request
)
def process_response(self, request, response):
logger.log_response(
request.method,
request.path,
dict(request.headers),
response.content,
response.status_code,
request
)
return response
Enable middleware in settings.py:
MIDDLEWARE = [
'your_project.middleware.BlackBoxLoggerMiddleware',
...
]
🟦 Flask
(Optional) Install Flask-Login for user tracking:
pip install flask-login
Initialize the logger in app.py:
from flask import Flask, request
from flask_login import current_user
from blackbox_logger.logger import HTTPLogger
logger = HTTPLogger(
get_user=lambda headers, request=None: current_user.username if current_user.is_authenticated else "Anonymous"
)
app = Flask(__name__)
@app.before_request
def log_req():
logger.log_request(
request.method,
request.path,
dict(request.headers),
request.get_data(),
request
)
@app.after_request
def log_resp(response):
logger.log_response(
request.method,
request.path,
dict(request.headers),
response.get_data(),
response.status_code,
request
)
return response
🟨 FastAPI
- Add middleware in main.py:
from fastapi import FastAPI, Request, Response
from blackbox_logger.logger import HTTPLogger
logger = HTTPLogger()
app = FastAPI()
@app.middleware("http")
async def blackbox_logger_middleware(request: Request, call_next):
# Optional: Attach user to request.state (e.g., after auth)
request.state.user = "Anonymous"
body = await request.body()
logger.log_request(request.method, str(request.url), dict(request.headers), body, request)
response = await call_next(request)
response_body = b"".join([chunk async for chunk in response.body_iterator])
response.body_iterator = iter([response_body])
logger.log_response(request.method, str(request.url), dict(request.headers), response_body, response.status_code, request)
return response
🔐 Masking Sensitive Data
- By default, the following fields are masked:
["password", "token", "access_token", "secret", "authorization", "csrfmiddlewaretoken"]
- You can update this in masking.py if needed.
📜 License
- MIT License
Project details
Release history Release notifications | RSS feed
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 blackbox_logger-0.1.4.tar.gz.
File metadata
- Download URL: blackbox_logger-0.1.4.tar.gz
- Upload date:
- Size: 5.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.11.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1cd043d6a208887f7c86f41d6d9cf572c7f8669a2972b9d0ad98cf31b94752de
|
|
| MD5 |
c0ae90e018c135dd83bb25fe2c6f15f7
|
|
| BLAKE2b-256 |
2b78cf3b4bcf62401c00840e9db8b79b11c7d28712f7bcf1193bc8ec6b52347e
|
File details
Details for the file blackbox_logger-0.1.4-py3-none-any.whl.
File metadata
- Download URL: blackbox_logger-0.1.4-py3-none-any.whl
- Upload date:
- Size: 6.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.11.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
52081a94d7424c6b436c5258aa78acd2c38a2993d52a015b4ef506fa43c8a3ee
|
|
| MD5 |
5a4fcccf8bb69ea2dc97bb4d4a1c474d
|
|
| BLAKE2b-256 |
017817df38386d93506c416a747530590b5c86080a8b81bfdb8929e73e44a5cc
|