Код: Выделить всё
class EmailHandler(logging.handlers.SMTPHandler):
def getSubject(self, record):
# super_subject = super().getSubject(record)
subject = f'LogLevel {record.levelname} recorded on remote server'
return subject
def emit(self, record):
try:
extra_handling: dict = record._extra
except AttributeError:
super().emit(record)
return
email_user = extra_handling.get('email_user', None)
if email_user:
# copy original emails
to_entries = [entry for entry in self.toaddrs]
# append user email
self.toaddrs.append(f'{email_user}')
super().emit(record)
# revert original emails
self.toaddrs = [entry for entry in to_entries]
else:
super().emit(record)
Насколько я понимаю, поскольку все это происходит в одном экземпляре журнала, в одном потоке, внесение изменений в свойство экземпляра и его возврат должен быть прозрачным для других вызовов, которые не соответствуют логике, верно?
Есть ли в этом какие-либо недостатки в производительности?
Примечание: я просто понял, что, возможно, это не то, чего я на самом деле хочу, поскольку мне хотелось бы либо два отдельных электронные письма или дополнительную запись toaddrs вместо скрытой копии. В этом случае мне придется переопределить другие функции, и я думаю, я понимаю, как это сделать.
Подробнее здесь: https://stackoverflow.com/questions/792 ... toaddrs-mo