Автоматически регистрируйте ваши 500, таким образом:
- Вы знаете, когда они происходят.
- Вам не нужно полагаться на пользователей, отправляющих вам трассировки стека.
Джоэл рекомендует даже зайти так далеко, чтобы автоматически создавать заявки в вашем баг-трекере, когда ваше приложение испытывает сбой. Лично я создаю (частный) RSS-канал со следами стека, URL-адресами и т. Д., На которые разработчики могут подписаться.
С другой стороны, отображение трассировки стека для ваших пользователей может привести к утечке информации, которую злоумышленники могут использовать для атаки на ваш сайт. Чрезмерно подробные сообщения об ошибках являются одной из классических ступеней для атак с использованием SQL-инъекций.
Редактировать (добавлен пример кода для захвата трассировки):
Вы можете получить информацию об исключении из вызова sys.exc_info. При форматировании трассировки для отображения используется модуль трассировки:
import traceback
import sys
try:
raise Exception("Message")
except:
type, value, tb = sys.exc_info()
print >> sys.stderr, type.__name__, ":", value
print >> sys.stderr, '\n'.join(traceback.format_tb(tb))
Печать:
Exception : Message
File "exception.py", line 5, in <module>
raise Exception("Message")