You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
65 lines
2.6 KiB
65 lines
2.6 KiB
.. _howto-error-reporting: |
|
|
|
Error reporting via e-mail |
|
========================== |
|
|
|
When you're running a public site you should always turn off the |
|
:setting:`DEBUG` setting. That will make your server run much faster, and will |
|
also prevent malicious users from seeing details of your application that can be |
|
revealed by the error pages. |
|
|
|
However, running with :setting:`DEBUG` set to ``False`` means you'll never see |
|
errors generated by your site -- everyone will just see your public error pages. |
|
You need to keep track of errors that occur in deployed sites, so Django can be |
|
configured to email you details of those errors. |
|
|
|
Server errors |
|
------------- |
|
|
|
When :setting:`DEBUG` is ``False``, Django will e-mail the users listed in the |
|
:setting:`ADMIN` setting whenever your code raises an unhandled exception and |
|
results in an internal server error (HTTP status code 500). This gives the |
|
administrators immediate notification of any errors. The :setting:`ADMINS` will |
|
get a description of the error, a complete Python traceback, and details about |
|
the HTTP request that caused the error. |
|
|
|
To disable this behavior, just remove all entries from the :setting:`ADMINS` |
|
setting. |
|
|
|
404 errors |
|
---------- |
|
|
|
Django can also be configured to email errors about broken links (404 "page |
|
not found" errors). Django sends emails about 404 errors when: |
|
|
|
* :setting:`DEBUG` is ``False`` |
|
|
|
* :setting:`SEND_BROKEN_LINK_EMAILS` is ``True`` |
|
|
|
* Your :setting:`MIDDLEWARE_CLASSES` setting includes ``CommonMiddleware`` |
|
(which it does by default). |
|
|
|
If those conditions are met, Django will e-mail the users listed in the |
|
:setting:`MANAGERS` setting whenever your code raises a 404 and the request has |
|
a referer. (It doesn't bother to e-mail for 404s that don't have a referer -- |
|
those are usually just people typing in broken URLs or broken web 'bots). |
|
|
|
You can tell Django to stop reporting particular 404s by tweaking the |
|
:setting:`IGNORABLE_404_ENDS` and :setting:`IGNORABLE_404_STARTS` settings. Both |
|
should be a tuple of strings. For example:: |
|
|
|
IGNORABLE_404_ENDS = ('.php', '.cgi') |
|
IGNORABLE_404_STARTS = ('/phpmyadmin/',) |
|
|
|
In this example, a 404 to any URL ending with ``.php`` or ``.cgi`` will *not* be |
|
reported. Neither will any URL starting with ``/phpmyadmin/``. |
|
|
|
The best way to disable this behavior is to set |
|
:setting:`SEND_BROKEN_LINK_EMAILS` to ``False``. |
|
|
|
.. seealso:: |
|
|
|
You can also set up custom error reporting by writing a custom piece of |
|
:ref:`exception middleware <exception-middleware>`. If you do write custom |
|
error handling, it's a good idea to emulate Django's built-in error handling |
|
and only report/log errors if :setting:`DEBUG` is ``False``.
|
|
|