Skip to main content

Django Error Reporting

Global error reporting framework for Django, Sentry, and DataDog

Requirements

  • Python >= 3.6
  • django >= 2.2.9
  • sentrysdk >= 1.5.4
  • ddtrace >=0.59.0
  • django-datadog-logger >= 0.5.0

Installation

Install django-error-reporting:

pip install django-error-reporting

Add it to your INSTALLED_APPS:

INSTALLED_APPS = (
    ...
    "django_error_reporting.apps.DjangoErrorReportingConfig",
    ...
)

Add this to your MIDDLEWARE:

MIDDLEWARE = (
    ...
    "django_error_reporting.middleware.ErrorReportingMiddleware"
)

For DataDog implementations

Add this to your INSTALLED_APPS:

INSTALLED_APPS = (
    ...
    "ddtrace.contrib.django",
)

Add this to your MIDDLEWARE:

MIDDLEWARE = (
    ...
    "django_error_reporting.middleware.DataDogExceptionMiddleware",
)

Log Ingestion

If you plan on implementing log ingestion, you'll also have to do the following:

Add this to your INSTALLED_APPS:

INSTALLED_APPS = (
    ...
    "django_datadog_logger"
)

And this to your MIDDLEWARE:

MIDDLEWARE = (
    ...
    "django_datadog_logger.middleware.error_log.ErrorLoggingMiddleware",
    "django_datadog_logger.middleware.request_log.RequestLoggingMiddleware",
)

Settings

General

DER_ENABLED_INTEGRATIONS

Tuple of enabled integrations.

Default: ("datadog", "sentry")

DER_INCLUDE_REQUEST_TAGS

Indicates whether event tags related to the request should be added.

These will include:

  • http.headers.ip_address - remote IP address (see DER_HEADERS_IP_ADDRESS)

DER_HEADERS_IP_ADDRESS

If DER_INCLUDE_REQUEST_TAGS is enabled, this defines the IP address header. This needs to correspond to a HTTP header in the format accepted by request.META.

Defaults to REMOTE_ADDR.

DER_HEADER_TAGS

A dictionary of headers to convert to event tags in the format of {<tag name>: <META name>} where <META name> is the key acccepted by request.META.

In general, it would be preferable to set these tags via ddtrace's DD_TRACE_HEADER_TAGS environment variable.

Defaults to None.

Sentry

DER_SENTRY_DSN

Your Sentry DSN.

Default: None

DER_SENTRY_INTEGRATIONS

List of Sentry integrations.

Default: []

DER_SENTRY_TRACES_SAMPLE_RATE

Float for sample rate.

Default: 0.0

DER_SENTRY_ENV

Environment name for Sentry.

Default: local

DER_SENTRY_REQUEST_BODIES

Request bodies setting.

Default: always

DER_SENTRY_RELEASE

Release.

Default: "0".

DER_SENTRY_DEBUG

Indicates if Sentry should use debug mode.

Defaults to settings.DEBUG.

General Logging

DER_LOGGING_LEVEL

Minimum logging level for logs output by DER.

Defaults to ERROR.

DataDog

DataDog Logging

DER_SETUP_DATADOG_LOGGING

Indicates whether to setup DataDog logging using django-datadog-logger.

DER_DATADOG_LOGGING_LEVEL

Minimum logging level for logs output for DataDog.

Defaults to DER_LOGGING_LEVEL.

DER_DATADOG_LOGGING_TO_CONSOLE

Indicates whether to send all DataDog logs to console.

Defaults to False

DER_DATADOG_LOGGING_FILE

Log file for DataDog. This must correspond to

Defaults to None which disables file logging.

Sentry Logging

DER_SENTRY_LOGGING_LEVEL

Minimum logging level for logs output for Sentry.

Defaults to DER_LOGGING_LEVEL.

On Ready

When the app is loaded (i.e., ready() is called), it will do the following:

  • Load default settings into the project settings
  • If DataDog integration is enabled:
    • Verify installed apps and middleware were added and throw NotImplementedError for missing.
      • If DataDog logging is enabled:
        • Verify installed apps and middleware were added and throw NotImplementedError for missing.
        • Set LOGGING with formatters, handlers, and loggers.
  • If Sentry integration is enabled:
    • Verify DER_SENTRY_DSN is set and throw NotImplementedError if missing.
    • Initialize Sentry.

Middleware

ErrorReportingMiddleware

This middleware adds event tags (using add_event_tag) for each request.

It also adds a trace_id to the session which is a unique identifier for a request. If using AWS load balancers, it will use the trace ID from it; otherwise, uuid.uuid4() is used.

To add app-specific tags, you can set a callback with ERROR_REPORTING_TAGGING_CALLBACK which should accept a Request instance and the add_event_tag function as arguments.

DataDogExceptionMiddleware

When an exception is captured, this middleware will set the appropriate span tags on the root span of the trace.

This middleware should be added as late as possible.

Contrib

For each implementation, there is a module in contrib and it must contain a setup() function which will be called during ready() to initialize and perform start-up tasks.

Utilities

add_event_tag(name, value, dd_scope=None)

Adds an event tag to the data sent to Sentry and/or DataDog.

print_debug(msg)

If settings.DEBUG is True, print msg.

Metadata

Release files for django-error-reporting 0.10.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for django-error-reporting 0.10.1
File Size Uploaded Provenance Actions
django_error_reporting-0.10.1.tar.gz 12.3 kB Without provenance Details for django_error_reporting-0.10.1.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for django-error-reporting 0.10.1
File Interpreter ABI Platform Actions
django_error_reporting-0.10.1-py3-none-any.whl Python 3 none any Details for django_error_reporting-0.10.1-py3-none-any.whl

Total release size: 25.7 kB

Release files / django_error_reporting-0.10.1.tar.gz

Download URL django_error_reporting-0.10.1.tar.gz
Size 12.3 kB
Tags Source
SHA-256 checksum
How to use checksums
2e69e9e87fad42c3f66996afa9f0fe64eab6116e1b5980e3c914b83638b69b7c
BLAKE2b-256 checksum
How to use checksums
2f3dec134411e526e9a155f68031a016fbb4a859af9a8cc270041deade4e8669
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.12.7

Release files / django_error_reporting-0.10.1-py3-none-any.whl

Download URL django_error_reporting-0.10.1-py3-none-any.whl
Size 13.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
4d7fda4dbb3d3228e640b533a3b32290043dabcbbf4afd9a87fc633519759947
BLAKE2b-256 checksum
How to use checksums
afe435314beac2c5ccc2e053088c759896a735a2498655cc5b9bd4bb8e5489c7
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.12.7

Security for django-error-reporting 0.10.1

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page