kender kender - 2 months ago 5x
Python Question

How do you log server errors on django sites

So, when playing with the development I can just set

and if an error occures I can see it nicely formatted, with good stack trace and request information.

But on kind of production site I'd rather use
and show visitors some standard error 500 page with information that I'm working on fixing this bug at this moment ;)

At the same time I'd like to have some way of logging all those information (stack trace and request info) to a file on my server - so I can just output it to my console and watch errors scroll, email the log to me every hour or something like this.

What logging solutions would you recomend for a django-site, that would meet those simple requirements? I have the application running as
server and I'm using apache web server as frontend (although thinking of going to lighttpd).


Well, when DEBUG = False, Django will automatically mail a full traceback of any error to each person listed in the ADMINS setting, which gets you notifications pretty much for free. If you'd like more fine-grained control, you can write and add to your settings a middleware class which defines a method named process_exception(), which will have access to the exception that was raised:

Your process_exception() method can then perform whatever type of logging you'd like: writing to console, writing to a file, etc., etc.

Edit: though it's a bit less useful, you can also listen for the got_request_exception signal, which will be sent whenever an exception is encountered during request processing:

This does not give you access to the exception object, however, so the middleware method is much easier to work with.