它在DEBUG = True模式下运行。有时,当遇到错误时,它可能会抛出带有追溯信息的错误消息,但有时,它仅显示以下行:
Unhandled Exception An unhandled exception was thrown by the application.
我必须切换到开发服务器才能查看详细消息。
遇到错误时,如何使它始终显示回溯消息?
也许你可以使用此代码段,这会将异常记录在apache的日志中:
utils.py:
def log_traceback(exception, args): import sys, traceback, logging exceptionType, exceptionValue, exceptionTraceback = sys.exc_info() logging.debug(exception) logging.debug(args) for tb in traceback.format_exception(exceptionType, exceptionValue, exceptionTraceback): logging.debug(tb)
site_logging.py:
import logging import sys logger = logging.getLogger('') logger.setLevel(logging.DEBUG) handler = logging.StreamHandler(sys.stderr) handler.setLevel(logging.DEBUG) formatter = logging.Formatter('%(levelname)-8s %(message)s') handler.setFormatter(formatter) logger.addHandler(handler)
把它放在你的settings.py:
import site_logging
在你的代码中:
from where.is.your.utils import log_traceback try: `do something` except Exception, args: log_traceback(Exception, args)
只需连接到got_request_exception信号并记录异常:
from django.core.signals import got_request_exception import logging def log(*args, **kwargs): logging.exception('error') got_request_exception.connect(log)
这将记录整个跟踪。在开发服务器中,它登录控制台。