Skip to main content

Generic handler for hooking client side javascript error.

Project description

INSTALL

To run the demo project for testing:

$ git clone git://github.com/jojax/django-js-error-hook.git
$ cd django-js-error-hook
$ virtualenv env --python=python3
$ source env/bin/activate
(env) $ pip install -e .
(env) $ pip install -e demo
(env) $ demo migrate

Run the server:

(env) $ demo runserver

Then access: http://localhost:8000/ - the JavaScript error will be logged in your console.

To install the project in production:

$ pip install django-js-error-hook

Add django-js-error-hook to your INSTALLED_APPS settings:

INSTALLED_APPS = (
    ...
    'django.contrib.staticfiles',
    'django_js_error_hook',
    ...
)

If you want to log the error in the console for development:

LOGGING = {
    'version': 1,
    'disable_existing_loggers': False,
    'filters': {
        'require_debug_false': {
            '()': 'django.utils.log.RequireDebugFalse'
        }
    },
    'formatters': {
        'verbose': {
            'format': '%(levelname)s %(asctime)s %(module)s %(process)d %(thread)d %(message)s'
        },
        'simple': {
            'format': '\033[22;32m%(levelname)s\033[0;0m %(message)s'
        },
    },
    'handlers': {
        'mail_admins': {
            'level': 'ERROR',
            'filters': ['require_debug_false'],
            'class': 'django.utils.log.AdminEmailHandler'
        },
        'console': {
            'level': 'DEBUG',
            'class': 'logging.StreamHandler',
            'formatter': 'simple'
            },
    },
    'loggers': {
        'django.request': {
            'handlers': ['mail_admins'],
            'level': 'ERROR',
            'propagate': True,
        },
        'javascript_error': {
            'handlers': ['mail_admins', 'console'],
            'level': 'ERROR',
            'propagate': True,
        },
    }
}

By default the logger is called “javascript_error”, if you want you can define JAVASCRIPT_ERROR_ID in your settings:

JAVASCRIPT_ERROR_ID = '<your logger name>'

The view will do csrf validation - if for some reason it doesn’t work, set JAVASCRIPT_ERROR_CSRF_EXEMPT to True in your settings.

Then install the urls:

urlpatterns = patterns('',
    ...
    url(r'^js_error_hook/', include('django_js_error_hook.urls')),
    ...
)

In your template, simply add the js_error_hook script:

<script type="text/javascript">
    window.djangoJSErrorHandlerUrl = "{% url 'js-error-handler' %}"
</script>
<script type="text/javascript" src="{% static 'js/django_js_error_hook.js' %}"></script>

Now every JavaScript error will be logged in your logging error stream. (Mail, Sentry, …)

Have fun and feel free to fork us and give us feedbacks!

DEVELOPMENT

When writing for this app you can run tox which will test the project against various versions of Python and Django:

pip install tox tox

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-js-error-hook-1.0.tar.gz (6.9 kB view details)

Uploaded Source

Built Distribution

django_js_error_hook-1.0-py3-none-any.whl (7.2 kB view details)

Uploaded Python 3

File details

Details for the file django-js-error-hook-1.0.tar.gz.

File metadata

  • Download URL: django-js-error-hook-1.0.tar.gz
  • Upload date:
  • Size: 6.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.10.6

File hashes

Hashes for django-js-error-hook-1.0.tar.gz
Algorithm Hash digest
SHA256 880aed615d2c63c29b04f756960fcdc5b64483e6c769349b44da7a1a97e44579
MD5 75f2edd593d304583ca3ca6bd1173ee6
BLAKE2b-256 11893e7e8eed185bc3a99a7f1e6eb7713d22924455acf23b0f9bb22b688b99c9

See more details on using hashes here.

File details

Details for the file django_js_error_hook-1.0-py3-none-any.whl.

File metadata

File hashes

Hashes for django_js_error_hook-1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 eeafbecebeeaddc02a6ae12707936444284e1709656f4170d023f25b2d68e2d3
MD5 272159e897def6085e10932bf8d1b0e1
BLAKE2b-256 65ca124cfb25ce082951cafc094c22265cf2d7014105a372bd017a8529cd1f47

See more details on using hashes here.

Supported by

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