它在DEBUG = True模式下運行。有時遇到錯誤時,它可以拋出與追溯信息的錯誤信息,但有時它只是顯示以下行:Django未處理異常
Unhandled Exception
An unhandled exception was thrown by the application.
我要切換到開發服務器,看看詳細消息。
如何在遇到錯誤時始終顯示回溯消息?
它在DEBUG = True模式下運行。有時遇到錯誤時,它可以拋出與追溯信息的錯誤信息,但有時它只是顯示以下行:Django未處理異常
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)
這就是DEBUG = True的意思:顯示完整的回溯。這個想法是,普通用戶不希望(也不希望他們)只看到一個簡單的錯誤信息。
在500-debug-page處理之外發生了某些錯誤,您仍然從Web服務器收到原始錯誤。 – 2009-12-18 14:55:13
是的,我也注意到有時我得到mod_python錯誤頁面而不是Django頁面。 – JAL 2010-01-12 03:23:59
您使用的是Apache嗎?
只是出於興趣,這是您的生產或開發環境,你想看到追溯?
從DJango Book on security - Exposed error messages
用戶的Apache和mod_python下部署還應該確保他們有PythonDebug關在自己的Apache conf文件;這將確保Django之前發生的任何錯誤都有機會加載,不會公開顯示。
我假設你想要PythonDebug On,這僅推薦用於開發。
@Ralph,我正在使用Nginx。 – jack 2009-12-18 03:02:03
我在PythonDebug Off中使用mod_python,我仍然可以在我的設置中切換DEBUG = True以快速排查問題。它仍然給我一個方便的django調試頁面,而不是apache的500內部服務器錯誤頁面。 – 2009-12-18 03:04:36
對不起傑克,還沒有用過Nginx,所以也許有人用Nginx可能能夠幫助解決問題。布蘭登 - 這可能是Nginx特有的嗎? – 2009-12-18 04:05:04
只要連接到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)
這將記錄整個跟蹤。在dev服務器中,它會登錄控制檯。
因此,顯示的錯誤是不一致的,有什麼模式顯示哪些錯誤,哪些不是? – 2009-12-18 04:06:21
你是如何爲網站提供服務的?你在Nginx下面說,但它是FastCGI嗎? – 2009-12-18 14:55:47