Как отправить одну запись журнала в файл, а другую - на электронную почту, используя модуль регистрации Python с несколькими обработчиками
Я использую обработчики TimeRotatingFileHandler и SMTPHandler. Я хочу отправить сообщения INFO в файл журнала и исключения по электронной почте. Моя настройка ниже:
import logging
from logging.handlers import TimeRotatingFileHandler
from logging.handlers import SMTPHandler
filelog_handler = TimedRotatingFileHandler(output_file, when='midnight')
filelog_handler.setFormatter(log_formatter)
filelog_handler.setLevel(logging.DEBUG)
logger.addHandler(filelog_handler)
maillog_handler = SMTPHandler(mailhost=("email.address.org", 25),
fromaddr="email@address.org",
toaddrs="email@address.org",
subject="send_err_email.py Message")
maillog_handler.setLevel(logging.INFO)
logger.addHandler(mail_log)
Когда я пытаюсь использовать этот код, он либо отправляет файл и электронную почту, либо ничего не отправляет. Может ли кто-нибудь помочь мне определить, что я делаю неправильно, или если это вообще возможно. Ваша помощь очень ценится.
1 ответ
В настоящее время уровень SMTPHandler установлен на INFO, поэтому любое событие с уровнем INFO или выше будет обрабатываться этим обработчиком. Вы можете заменить свою предпоследнюю строку
maillog_handler.setLevel(logging.ERROR)
так что на электронную почту отправляются только события ERROR и CRITICAL.