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

问题描述 投票:18回答:3

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

目前我称之为:

python manage.py runserver --verbosity 2
python django
3个回答
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)

27
投票

Python 2.7 disables the display of DeprecationWarning by default

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

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

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.

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

© www.soinside.com 2019 - 2024. All rights reserved.