Mam moduł rejestrowania MemoryHandler skonfigurowany do kolejkowania komunikatów debugowania i komunikatów o błędach dla celu SMTPHandler. Chcę, aby wiadomość e-mail została wysłana, gdy błędy procesu zawierają wszystkie instrukcje debugowania do tego momentu (po jednym w wierszu). Zamiast tego otrzymuję osobny adres e-mail dla każdej wiadomości debugowania.Dane wyjściowe sortowania w dzienniku Python MemoryHandler z SMTPHandler
Wygląda na to, że powinno być trywialne i częścią pakietu logowania, ale nie mogę znaleźć niczego na ten temat, żadnych przykładów, niczego w 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)
związane z tym:
Czy muszę dodać error_mail_handler
do rejestratora jednoznacznie, czy jest to cel memory_handler
tak? Czy należy ustawić error_mail_handler
na cel DEBUG lub ERROR? Czy potrzebuje nawet celu, gdy jest karmiony od memory_handler
?
Chciałbym zobaczyć działający kod od każdego, kto rozwiązał ten problem.
Świetne rzeczy. Nie codziennie otrzymujesz odpowiedź na pytanie autora modułu! – SpliFF
@VinaySajip - co myślisz o używaniu modułu smtplib do wysyłania e-maili? – codingknob
@ algotr8der - Możesz zobaczyć z linku (zaktualizowanego), że skrypt faktycznie używa 'smtplib' do wysyłania wiadomości e-mail. –