一尘不染

Django未处理异常

django

它在DEBUG = True模式下运行。有时,当遇到错误时,它可能会抛出带有追溯信息的错误消息,但有时,它仅显示以下行:

Unhandled Exception

An unhandled exception was thrown by the application.

我必须切换到开发服务器才能查看详细消息。

遇到错误时,如何使它始终显示回溯消息?


阅读 312

收藏
2020-03-31

共2个答案

一尘不染

也许你可以使用此代码段,这会将异常记录在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)
2020-03-31
一尘不染

只需连接到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)

这将记录整个跟踪。在开发服务器中,它登录控制台。

2020-03-31