У меня есть модуль протоколирования MemoryHandler, настроенный для отладки очереди и сообщений об ошибках для целевой SMTPHandler. Я хочу, чтобы электронное письмо отправлялось при ошибках процесса, содержащих все операторы отладки до этой точки (по одной в строке). Вместо этого я получаю отдельное письмо для каждого отладочного сообщения.
Кажется, что это должно быть тривиальным и частью пакета протоколирования, но я ничего не могу найти об этом, никаких примеров, ничего в Google.
log = logging.getLogger()
log.setLevel(logging.DEBUG)
debug_format = logging.Formatter("%(levelname)s at %(asctime)s in %(filename)s (line %(lineno)d):: %(message)s")
# write errors to email
error_mail_subject = "ERROR: Script error in %s on %s" % (sys.argv[0], os.uname()[1])
error_mail_handler = logging.handlers.SMTPHandler(SMTP_HOST, '[email protected]'+os.uname()[1], [LOG_EMAIL], error_mail_subject)
error_mail_handler.setLevel(logging.ERROR)
#error_mail_handler.setLevel(logging.DEBUG)
error_mail_handler.setFormatter(debug_format)
# buffer debug messages so they can be sent with error emails
memory_handler = logging.handlers.MemoryHandler(1024*10, logging.ERROR, error_mail_handler)
memory_handler.setLevel(logging.DEBUG)
# attach handlers
log.addHandler(memory_handler)
log.addHandler(error_mail_handler)
В связи с этим:
Нужно ли добавлять тег error_mail_handler
в журнал, если это цель memory_handler
?
Должно ли error_mail_handler
быть установлено значение DEBUG или ERROR? Нужна ли даже цель, когда она подается от memory_handler
?
Хотелось бы увидеть какой-нибудь рабочий код от тех, кто решил эту проблему.