Я тестирую некоторые модели Django с помощью bog-standerd django.test.Testcase.Мой models.py записывает в журнал отладки, используя следующий код инициализации:
import logging
logger = logging.getLogger(__name__) # name is myapp.models
, а затем я записываю в журнал:
logger.debug("Here is my message")
В моем settings.py янастроил один FileHandler и регистратор для myapp, используя этот обработчик и только этот обработчик.Это замечательно.Я вижу сообщения в этот журнал.Когда я нахожусь в оболочке Django, я только вижу сообщения в этот журнал.
Когда я, однако, запускаю свой набор тестов, моя консоль набора тестов также видит все эти сообщения.Он использует другой форматер, который я не определил явно, и пишет в stderr.У меня не определен обработчик журнала, который пишет в stderr.
Я не хочу, чтобы эти сообщения рассылали спам на моей консоли.Я запишу свой лог-файл, если хочу увидеть эти сообщенияЕсть ли способ остановить это?(Да, я мог бы перенаправить stderr, но полезный вывод также идет в stderr.)
Редактировать: я установил два обработчика в своих настройках.py:
'handlers': {
'null': {
'level': 'DEBUG',
'class': 'django.utils.log.NullHandler',
},
'logfile' : {
'level':'DEBUG',
'class':'logging.FileHandler',
'filename':'%s/log/development.log' % PROJECT_DIR,
'formatter': 'simple'
},
},
и попробовалthis:
'loggers': {
'django': {
'level': 'DEBUG',
'handlers': ['null']
},
'myapp': {
'handlers': ['logfile'],
'level':'DEBUG',
},
... но поведение при записи в журнал / stderr остается прежним.Как будто я получаю другой обработчик журнала, когда запускаю тесты.