Skip to main content

Add your description here

Project description

Django Stacktrace

Install from PyPI:

pip install django-stacktrace

A reusable Django app that captures exceptions with request context and stores them in the database, similar to a lightweight Sentry. It is best suited for early-stage apps that do not yet need to invest in a full error tracking tool; for production-grade monitoring, Sentry is recommended.

Quick start

  1. Add the app:
    • django_stacktrace to INSTALLED_APPS
  2. Add middleware (signal fallback is disabled automatically when middleware is enabled):
    • django_stacktrace.middleware.StacktraceMiddleware in MIDDLEWARE
  3. Apply migrations:
    • python manage.py migrate
  4. Trigger a crash and inspect Crash events in the Django admin.

Manual capture

You can capture exceptions directly without middleware:

from django_stacktrace.event_store import store_crash_event

try:
    1 / 0
except Exception as exc:
    store_crash_event(exc=exc)

Settings

All settings live under a single STACKTRACE dictionary. Each key is optional.

STACKTRACE = {
    "ENABLED": True,
    "SAMPLE_RATE": 1.0,
    "RATE_LIMIT": 0,
    "CAPTURE_HEADERS": True,
    "CAPTURE_BODY": False,
    "MAX_PAYLOAD_BYTES": 64 * 1024,
    "REDACT_FIELDS": ["password", "token"],
    "REDACT_HEADERS": ["authorization", "cookie"],
    "USER_FIELD": "username",
}

Available keys:

  • ENABLED (default True)
  • SAMPLE_RATE (default 1.0, 0-1 sampling probability)
  • RATE_LIMIT (default 0, per-minute cap; 0 disables)
  • CAPTURE_HEADERS (default True)
  • CAPTURE_BODY (default False)
  • MAX_PAYLOAD_BYTES (default 65536)
  • REDACT_FIELDS (request keys to mask)
  • REDACT_HEADERS (header keys to mask)
  • USER_FIELD (user attribute for display name)

Settings reference

ENABLED

  • Type: bool
  • Purpose: Enable or disable crash capturing entirely.
  • Example: "ENABLED": False

SAMPLE_RATE

  • Type: float between 0.0 and 1.0
  • Purpose: Probabilistic sampling for high-volume apps.
  • Example: "SAMPLE_RATE": 0.1

RATE_LIMIT

  • Type: int
  • Purpose: Per-minute cap; 0 disables rate limiting.
  • Example: "RATE_LIMIT": 120

CAPTURE_HEADERS

  • Type: bool
  • Purpose: Include request headers in the captured event.
  • Example: "CAPTURE_HEADERS": True

CAPTURE_BODY

  • Type: bool
  • Purpose: Include request body in the captured event.
  • Example: "CAPTURE_BODY": False

MAX_PAYLOAD_BYTES

  • Type: int
  • Purpose: Max bytes kept from request body.
  • Example: "MAX_PAYLOAD_BYTES": 65536

REDACT_FIELDS

  • Type: list[str] or set[str]
  • Purpose: Request data keys to mask before storage.
  • Example: "REDACT_FIELDS": ["password", "token"]

REDACT_HEADERS

  • Type: list[str] or set[str]
  • Purpose: Header keys to mask before storage.
  • Example: "REDACT_HEADERS": ["authorization", "cookie"]

USER_FIELD

  • Type: str
  • Purpose: User attribute used for display name in the event.
  • Example: "USER_FIELD": "username"

Data model

Events are stored in django_stacktrace.CrashEvent with indexed fields like level, logger, error type, request path, user identifier, and traceback hash, plus a JSON payload for full context.

Backlog

  • Async storage path (Celery/queue support)
  • Logging integration for logging exceptions
  • Rate-limit options (per-user/IP limits, key prefix)
  • Body size controls (per-content-type limits, truncation)
  • Filtering hooks (ignore exceptions or URLs)
  • Admin UI improvements (grouping, search, trends)
  • Export and retention tools (cleanup, CSV export)

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

django_stacktrace-0.2.1.tar.gz (18.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

django_stacktrace-0.2.1-py3-none-any.whl (28.9 kB view details)

Uploaded Python 3

File details

Details for the file django_stacktrace-0.2.1.tar.gz.

File metadata

  • Download URL: django_stacktrace-0.2.1.tar.gz
  • Upload date:
  • Size: 18.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for django_stacktrace-0.2.1.tar.gz
Algorithm Hash digest
SHA256 007cc8fa3cfed02381c87a3651852ad9cb07fe0182117f5ce69c8b01c212527e
MD5 f2b697c06d24bec625d63d82d0c31459
BLAKE2b-256 0fa6811eba8144750b27b047bba0e7cb1dc7fbd7f44e34c5c56b403cab0c9e23

See more details on using hashes here.

Provenance

The following attestation bundles were made for django_stacktrace-0.2.1.tar.gz:

Publisher: release.yml on marselbeqiri/django-stacktrace

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file django_stacktrace-0.2.1-py3-none-any.whl.

File metadata

File hashes

Hashes for django_stacktrace-0.2.1-py3-none-any.whl
Algorithm Hash digest
SHA256 c6ce601c84449c36f5f59aa13766b35a6401e32b55ce4dbc627c158d759aa079
MD5 9de03c2ecc7cb587b559618bd4a5db48
BLAKE2b-256 1006e658cdf06179d1f15a120354016f512b6da904895b08e9e635244e7c2e0f

See more details on using hashes here.

Provenance

The following attestation bundles were made for django_stacktrace-0.2.1-py3-none-any.whl:

Publisher: release.yml on marselbeqiri/django-stacktrace

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page