python - 记录器结果没有出现在 Django 的 unittest 输出中
问题描述
我很难在 django 测试运行器(即from django.test import TestCase
日志记录解决方案)的交集处获得所需的行为。
我的记录器已设置并可以在其他区域使用类似这样的东西
import logging
logger = logging.getLogger(__name__)
logger.warning("duck!")
所以在运行 Django 应用程序时,我会看到我所期望的消息和元数据;然而,问题是这些日志行没有出现在我在运行单元测试时知道的任何位置,即django-admin run test
我希望能够运行测试并查看日志输出,最好是在 STDOUT 中,并且大概设置输出日志级别,以便测试显示那些......
我的设置可见。记录:
LOGGING = {
'version': 1,
'disable_existing_loggers': False,
'root': {
'level': 'ERROR',
'handlers': ['sentry', 'console'],
},
'formatters': {
'verbose': {
'format': '%(levelname)s %(asctime)s %(module)s '
'%(process)d %(thread)d %(message)s'
},
},
'handlers': {
'sentry': {
'level': 'WARNING', # To capture more than ERROR, change to WARNING, INFO, etc.
'class': 'raven.contrib.django.raven_compat.handlers.SentryHandler',
'tags': {'custom-tag': 'x'},
},
'console': {
'level': 'DEBUG',
'class': 'logging.StreamHandler',
'formatter': 'verbose'
}
},
'loggers': {
'django.db.backends': {
'level': 'ERROR',
'handlers': ['console'],
'propagate': False,
},
'raven': {
'level': 'WARNING',
'handlers': ['console'],
'propagate': False,
},
'sentry.errors': {
'level': 'DEBUG',
'handlers': ['console'],
'propagate': False,
},
'celery': {
'handlers': ['console'],
'level': 'WARNING',
'proagate': True,
},
},
}
解决方案
尝试将您的root
级别更改为WARNING
:
'root': {
'level': 'WARNING',
'handlers': ['sentry', 'console'],
},