django-better500s is a library that makes 500 errors more user-friendly, and more developer-friendly. It logs the full error traceback (as if it were in DEBUG mode), as well as a user's description of what they were trying to do.
Pull requests are quite welcome!
-
pip install django-better500s
-
Edit your
settings.py:
INSTALLED_APPS += ("better500s",) # If you have other exception-processing middleware, you should # pay attention to what order you put middleware in. "At the end" # should work fine for Better500s, though. MIDDLEWARE_CLASSES += ("better500s.middleware.Better500s",) # Set any optional settings (below) BETTER_500_DEFAULT_RETURN_URL_NAME = "home_page" BETTER_500_LOG_DIR = join(PROJECT_ROOT, 'logs', 'better_500') BETTER_500_FROM_EMAIL = "[email protected]" BETTER_500_TO_EMAILS = ["[email protected]",] BETTER_500_UNCAUGHT_DIR = "Uncaught Logs"
-
Add in the urls:
urlpatterns += patterns('', url(r'better500s/', include('better500s.urls', namespace="better500s", app_name='better500s') ), )
-
Enjoy better error reports.
-
BETTER_500_LOG_DIR
- Where the full log traces should be stored (ondefault_storage
, or failing that, locally). Defaults to"PROJECT_ROOT/logs/better500s"
. -
BETTER_500_FROM_EMAIL
- The email that notifications should be sent from. Defaults tosettings.DEFAULT_FROM_EMAIL
. -
BETTER_500_TO_EMAILS
- The set of email that notifications should be sent to. Defaults tosettings.ADMINS
. -
BETTER_500_UNCAUGHT_DIR
- Where to store log traces in which the 500 handling page crashed, or the user's browser crashed. Defaults to"UNCAUGHT"
. -
BETTER_500_AJAX_URL
- URL for ajax callback, that saves the log, and sends off an email. Defaults to"better-500-callback/"
. -
BETTER_500_POST_URL
- URL for user crash report posting. Defaults to"better-500-saved/"
. -
BETTER_500_DEFAULT_RETURN_URL_NAME
- The url name that the "Go Home" button should link to. If none, the button is hidden. Defaults toNone
.
- 500 errors (only) are caught.
- Full debug page traceback is generated, and saved to the
UNCAUGHT_DIR
. - A "We're sorry / Tell us what you were doing" page loads.
- On load, that page ajax pings the server.
- On ping, the view files the log into a date-organized folder, and emails the
TO_EMAILs
with a link. - If the user submits a report, that report is saved to the database, tied to the log file. A second email is sent, with the user's report.
- An admin can click the view link, and see the full traceback, and the user's report.
-
500_handler.html
- This template is what users see when a 500 occurs, and where they can submit their report. -
feedback_saved.html
- If a user submits a report, this page is what they see. Links to the page that produced the error, and optionally, home. -
view_error.html
- Developer-side template for viewing captured 500s -
admin_email.txt
- Template for the 500 error email. -
error_with_notes_email.txt
- Template for the user bug report email.
By default, django-better500s uses the default_backend
to store
error logs. If that fails, it falls back local file storage.
django-better500s was written by Steven Skoczen for Aquameta.