parts/django/docs/howto/error-reporting.txt
changeset 307 c6bca38c1cbf
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/parts/django/docs/howto/error-reporting.txt	Sat Jan 08 11:20:57 2011 +0530
@@ -0,0 +1,78 @@
+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.
+
+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``.