如何让django runserver向我展示DeprecationWarnings和其他有用的消息?

时间:2011-07-16 18:57:31

标签: python django

我最近将我的django安装从1.2升级到1.3。在我的开发人员系统上,我没有得到任何关于已弃用的调用的警告。但是一旦我将代码移到我的生产apache服务器上,我在apache日志中看到了很多'DeprecationWarning'消息。 那么我如何调用runserver来获取这些消息呢?

目前我称之为:

python manage.py runserver --verbosity 2

3 个答案:

答案 0 :(得分:27)

Python 2.7 disables the display of DeprecationWarning by default

要重新启用它,请将环境变量PYTHONWARNINGS设置为“d”:

export PYTHONWARNINGS="d"; ./manage.py runserver

答案 1 :(得分:3)

要让您的开发服务器您的测试失败为DeprecationWarnings找到并修复它们,您可以通过添加

将它们转换为错误
if settings.DEBUG:
    import warnings
    warnings.simplefilter('error', DeprecationWarning)
# these are less urgent but could also be enabled
#   warnings.simplefilter('error', PendingDeprecationWarning)

到你的顶级urls.py。

我更喜欢这种方法,因为它在测试中失败了,让我以自动方式逐个找到已弃用的代码。

答案 2 :(得分:0)

runserver命令忽略详细程度选项:https://code.djangoproject.com/ticket/15132

我建议设置记录器并将输出定向到stderr:https://docs.djangoproject.com/en/1.3/topics/logging/

例如:

import logging
logger = logging.getLogger('django')   # Django's catch-all logger
hdlr = logging.StreamHandler()   # Logs to stderr by default
formatter = logging.Formatter('%(asctime)s %(levelname)s %(message)s')
hdlr.setFormatter(formatter)
logger.addHandler(hdlr) 
logger.setLevel(logging.WARNING)