在 Django 测试中设置根记录器的日志记录级别

Set the logging level on the root logger in Django tests

我有以下配置(基于this):

'loggers': {
    'django': {
        'handlers': ['console'],
        'level': 'INFO',
    },
    'root': {
        'handlers': ['console'],
        'level': 'INFO',
    },
},

当我 运行 我的测试是这样的 (Django 1.8.4)

./manage.py test

我从我自己的代码中的源代码行获得 DEBUG 级别的输出,看起来像

import logging
logging.debug("Shouldn't be seen, but is")

该行表明日志消息将发送到根记录器,如我所料:

DEBUG:root:blah: Shouldn't be seen, but is

因为测试运行宁它说

nosetests --verbosity=1

如果我说

./manage.py test --verbosity=0

nosetests 消息消失,但调试日志记录没有。

这是怎么回事?我的日志记录配置错误吗?鼻子测试有干扰吗?姜戈?

我认为我的日志记录配置正在被读取。我通过在此配置文件中配置该记录器来抑制 django.request 警告。

我该如何调试?

(我读了 this related post,没有帮助。)

您的记录器配置写入不正确。 'root' 配置超出了 'loggers' 部分,如下所示:

'loggers': {
    'django': {
        'handlers': ['console'],
        'level': 'INFO',
    },
},
'root': {
    'handlers': ['console'],
    'level': 'INFO',
}

设置它应该可以工作。