它在DEBUG = True模式下运行.有时它会在遇到错误时抛出带有回溯信息的错误消息,但有时它只显示以下行:
Unhandled Exception
An unhandled exception was thrown by the application.
Run Code Online (Sandbox Code Playgroud)
我必须切换到开发服务器才能看到详细消息.
如何在遇到错误时始终显示回溯消息?
只需连接到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)
Run Code Online (Sandbox Code Playgroud)
这将记录整个跟踪.在开发服务器中,它会在控制台中登录.
也许您可以使用此代码段,这将在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)
Run Code Online (Sandbox Code Playgroud)
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)
Run Code Online (Sandbox Code Playgroud)
把它放在你的settings.py:
import site_logging
Run Code Online (Sandbox Code Playgroud)
在你的代码中:
from where.is.your.utils import log_traceback
try:
`do something`
except Exception, args:
log_traceback(Exception, args)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
14605 次 |
| 最近记录: |