Skip to main content

DataDog and Sentry error reporting for Django

Project description

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.

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_error_reporting-0.10.1.tar.gz (12.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_error_reporting-0.10.1-py3-none-any.whl (13.4 kB view details)

Uploaded Python 3

File details

Details for the file django_error_reporting-0.10.1.tar.gz.

File metadata

  • Download URL: django_error_reporting-0.10.1.tar.gz
  • Upload date:
  • Size: 12.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.7

File hashes

Hashes for django_error_reporting-0.10.1.tar.gz
Algorithm Hash digest
SHA256 2e69e9e87fad42c3f66996afa9f0fe64eab6116e1b5980e3c914b83638b69b7c
MD5 78e60dc26de98445a69c4ae0ed5caa1a
BLAKE2b-256 2f3dec134411e526e9a155f68031a016fbb4a859af9a8cc270041deade4e8669

See more details on using hashes here.

File details

Details for the file django_error_reporting-0.10.1-py3-none-any.whl.

File metadata

File hashes

Hashes for django_error_reporting-0.10.1-py3-none-any.whl
Algorithm Hash digest
SHA256 4d7fda4dbb3d3228e640b533a3b32290043dabcbbf4afd9a87fc633519759947
MD5 fae8641d124da3fa09b1b7c0d37d4ac8
BLAKE2b-256 afe435314beac2c5ccc2e053088c759896a735a2498655cc5b9bd4bb8e5489c7

See more details on using hashes here.

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