A Django package for easy CRUD operation logging and container logs
Project description
Easy Audit Logging
A Django package that extends the default logging mechanism to track CRUD operations and container logs.
Features
- Automatic logging of CRUD operations (Create, Read, Update, Delete)
- Tracks both HTTP requests and model changes
- Custom log levels Audit(21) and API(22) for CRUD and Request-Response auditing.
- Structured JSON logs for audit trails
- Human-readable container logs
- Separate log files for audit and container logs
- Console and file output options
Installation
- Install the package:
pip install easy-audit-logging
- Add 'easy_audit_logging' to your INSTALLED_APPS in settings.py:
INSTALLED_APPS = [
...
'easy_audit_logging',
]
- Add the middleware to your MIDDLEWARE in settings.py:
MIDDLEWARE = [
...
'easy_audit_logging.middleware.EasyLoggingMiddleware',
]
- Configure logging in settings.py:
from easy_audit_logging import *
LOGGING = {
"version": 1,
"disable_existing_loggers": False,
"formatters": {
"json": get_json_formatter(),
"verbose": get_console_formatter(),
"api_json": get_api_file_formatter(),
},
"handlers": {
"console": {
"level": "DEBUG",
"class": "logging.StreamHandler",
"formatter": "verbose",
},
"file": get_json_handler(level="DEBUG", formatter="json"),
"api_file": get_api_file_handler(formatter="api_json"),
},
"root": {"level": "DEBUG", "handlers": ["console", "file"]},
"loggers": {
"audit.request": {
"handlers": ["api_file"],
"level": "API",
"propagate": False,
},
"django": {
"handlers": ["console", "file"],
"level": "INFO",
"propagate": False,
},
}
}
- For external services logging, extend
HTTPClient or SFTPClient
class ExternalService(HTTPClient):
def __init__(self):
super().__init__("service_name")
def connect(self):
url = "https://www.sample.com"
response = self.get(url) # sample log structure below
- Create
audit_logsfolder in project directory
Log Types
Container Logs
Console Log Format
'%(levelname)s %(asctime)s %(pathname)s %(module)s %(funcName)s %(message)s'
-----------------------------------------------------------------------------
INFO 2025-04-30 08:51:10,403 /app/patients/api/utils.py utils create_patient_with_contacts_and_diseases Patient 'd6c9a056-0b57-453a-8c0f-44319004b761 - Patient3' created.
File Log Format
{
"timestamp": "2025-05-15 13:38:02.141",
"level": "DEBUG",
"name": "botocore.auth",
"path": "/opt/venv/lib/python3.11/site-packages/botocore/auth.py",
"module": "auth",
"function": "add_auth",
"message": "Calculating signature using v4 auth.",
"exception": "",
"request": "",
"extra_fields": ""
}
Request-Response Log
Incoming Log Format
{
"timestamp": "2025-05-19 15:25:27.836",
"level": "API",
"name": "audit.request",
"message": "Audit Internal Request",
"service_name": "review_board",
"request_type": "internal",
"protocol": "http",
"request_repr": {
"method": "GET",
"path": "/api/v1/health/",
"query_params": {},
"headers": {
"Content-Type": "application/json",
},
"user": null,
"body": {
"title": "hello"
}
},
"response_repr": {
"status_code": 200,
"headers": {
"Content-Type": "application/json",
},
"body": {
"status": "ok"
}
},
"error_message": null,
"execution_time": 5.376734018325806
}
External Log format
{
"timestamp": "2025-05-19 15:25:27.717",
"level": "API",
"name": "audit.request",
"message": "Audit External Service",
"service_name": "apollo",
"request_type": "external",
"protocol": "http",
"request_repr": "{'endpoint': 'https://www.sample.com', 'method': 'GET', 'headers': {}, 'body': {}}",
"response_repr": "{'status_code': 200, 'body': {'title': 'title', 'expiresIn': 3600, 'error': None, 'errorDescription': None}}",
"error_message": "",
"execution_time": 5.16809344291687
}
License
This project is licensed under the MIT License - see the LICENSE file for details.
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
easy_audit_logging-0.1.31.tar.gz
(12.9 kB
view details)
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 easy_audit_logging-0.1.31.tar.gz.
File metadata
- Download URL: easy_audit_logging-0.1.31.tar.gz
- Upload date:
- Size: 12.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: python-httpx/0.28.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d94a703679e8b16eae344fdce99fd60f57f3f956baade0c4ab2d5de256ee63f7
|
|
| MD5 |
74a4f59209a98ef583e9d6d5da870df7
|
|
| BLAKE2b-256 |
66cd6ad5c74de17cb38cef1ef82609d6483a0aa2e93314e9a5372c137c2578f9
|
File details
Details for the file easy_audit_logging-0.1.31-py3-none-any.whl.
File metadata
- Download URL: easy_audit_logging-0.1.31-py3-none-any.whl
- Upload date:
- Size: 14.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: python-httpx/0.28.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
fc01fd8368020c423754dc42d0e99e3183e28cde5c439b22d24defd689343356
|
|
| MD5 |
9f6f2e7f5ce112eec38b6e3eae14156d
|
|
| BLAKE2b-256 |
66ee7888aa8e160478348ad6ccbe6450d30ff8ef835ee87cabe909cd2c35865d
|