mirror of
				https://github.com/django/django.git
				synced 2025-11-04 05:35:37 +00:00 
			
		
		
		
	git-svn-id: http://code.djangoproject.com/svn/django/trunk@14573 bcc190cf-cafb-0310-a4f2-bffc1f526a37
		
			
				
	
	
		
			95 lines
		
	
	
	
		
			3.7 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
			
		
		
	
	
			95 lines
		
	
	
	
		
			3.7 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
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 e-mail you details of those errors.
 | 
						|
 | 
						|
Server errors
 | 
						|
-------------
 | 
						|
 | 
						|
When :setting:`DEBUG` is ``False``, Django will e-mail the users listed in the
 | 
						|
:setting:`ADMINS` 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.
 | 
						|
 | 
						|
.. note::
 | 
						|
 | 
						|
   In order to send e-mail, Django requires a few settings telling it
 | 
						|
   how to connect to your mail server. At the very least, you'll need
 | 
						|
   to specify :setting:`EMAIL_HOST` and possibly
 | 
						|
   :setting:`EMAIL_HOST_USER` and :setting:`EMAIL_HOST_PASSWORD`,
 | 
						|
   though other settings may be also required depending on your mail
 | 
						|
   server's configuration. Consult :doc:`the Django settings
 | 
						|
   documentation </ref/settings>` for a full list of email-related
 | 
						|
   settings.
 | 
						|
 | 
						|
By default, Django will send e-mail from root@localhost. However, some mail
 | 
						|
providers reject all e-mail from this address. To use a different sender
 | 
						|
address, modify the :setting:`SERVER_EMAIL` setting.
 | 
						|
 | 
						|
To disable this behavior, just remove all entries from the :setting:`ADMINS`
 | 
						|
setting.
 | 
						|
 | 
						|
.. seealso::
 | 
						|
 | 
						|
   .. versionadded:: 1.3
 | 
						|
 | 
						|
   Server error e-mails are sent using the logging framework, so you can
 | 
						|
   customize this behaviour by :doc:`customizing your logging configuration
 | 
						|
   </topics/logging>`.
 | 
						|
 | 
						|
404 errors
 | 
						|
----------
 | 
						|
 | 
						|
Django can also be configured to e-mail errors about broken links (404 "page
 | 
						|
not found" errors). Django sends e-mails 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``.
 | 
						|
 | 
						|
.. seealso::
 | 
						|
 | 
						|
   .. versionadded:: 1.3
 | 
						|
 | 
						|
   404 errors are logged using the logging framework. By default, these log
 | 
						|
   records are ignored, but you can use them for error reporting by writing a
 | 
						|
   handler and :doc:`configuring logging </topics/logging>` appropriately.
 | 
						|
 |