Я выполняю простой Python Django TestCase.Вопрос прост: я хочу использовать регистраторы для перенаправления информации (stdout) в один файл и сбоев / ошибок (stderr) в другой.
Я знаю, что могу вывести stdout в файл, просто определив регистратор ииспользовать его для печати сообщений (т.е. logger.info('my debug message')
);Тем не менее, я не нашел способ записать сбой / ошибку.Я могу перенаправить вывод всего тестового прогона, используя Bash (из которого я полууспешен), но я знаю, что есть способ упростить его и использовать регистраторы для выполнения всей этой серверной работы за меня.
Вот пример моего регистратора:
LOGGING = {
'version': 1,
'disable_existing_loggers': False,
'formatters': {
'verbose': {
'format': '%(levelname)s %(asctime)s, %(module)s at line %(lineno)d:\n%(message)s'
},
},
'handlers': {
'app': {
'level': 'DEBUG',
'class': 'logging.FileHandler',
'filename': 'logs/app.log',
'formatter': 'verbose'
},
'test': {
'level': 'DEBUG',
'class': 'logging.FileHandler',
'filename': 'logs/test.log',
'formatter': 'verbose'
},
'test-fail': {
'level': 'ERROR',
'class': 'logging.FileHandler',
'filename': 'logs/test-fail.log',
'formatter': 'verbose',
}
},
'loggers': {
'app': {
'handlers': ['app'],
'level': 'DEBUG',
'propagate': True,
},
'test': {
'handlers': ['test', 'test-fail'],
'level': 'DEBUG',
'propagate': True,
},
},
}
И скажем так, я пытаюсь записать следующий тестовый пример в файл logs / test-fail.log , указанный в моемlogger:
logger = logging.getLogger('test')
def test_this(self):
logger.debug('This message will print to the logs/test.log file')
self.assertTrue(False) # will fail
Короче говоря, я хочу напечатать ошибки / сбои из Django TestCase, используя регистратор, а не , используя Bash.Также обратите внимание, что я в порядке использования регистратора по умолчанию, но я хочу определить регистр журнала ошибок только для тестовых случаев, и я не хочу, чтобы тестовый случай ошибки использовался по умолчанию.