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 (seeDER_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
NotImplementedErrorfor missing.- If DataDog logging is enabled:
- Verify installed apps and middleware were added and throw
NotImplementedErrorfor missing. - Set
LOGGINGwith formatters, handlers, and loggers.
- Verify installed apps and middleware were added and throw
- If DataDog logging is enabled:
- Verify installed apps and middleware were added and throw
- If Sentry integration is enabled:
- Verify
DER_SENTRY_DSNis set and throwNotImplementedErrorif missing. - Initialize Sentry.
- Verify
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)
| 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)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| 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.