регистрация Python сообщает обработчику, когда он удаляется с помощью removeHandler? - PullRequest
1 голос
/ 15 ноября 2011

Я создаю подкласс FileHandler для написания обработчика, который создает правильные XML-файлы (то есть, не при программе, только после завершения).

что я делаю:

  • создать файл,
  • написать пролог (открытие элемента <Diag>),
  • каждая запись журнала вызывает элемент <line /> в xml
  • остановка записи означает запись элемента </Diag> ближе.

было бы неплохо, если бы Logger.removeHandler вызывал какой-то специальный обратный вызов в удаляемом обработчике, но я не могу его найти. может, его там нет ...

1 Ответ

2 голосов
/ 15 ноября 2011

Обработчики не уведомляются, когда они добавляются или удаляются из регистраторов.Регистраторы используют обработчики, но обработчики ничего не знают о регистраторах.

Тем не менее, обработчик имеет метод close(), который вызывается при выходе из программы с помощью logging.shutdown() (зарегистрирован с atexit), поэтому вы можете добавить свойлогика есть.Просто не забудьте вызвать базовую реализацию close(), чтобы обеспечить правильное ведение хозяйства:

class MyHandler(logging.Handler):

    def close(self):
       # Write XML epilog.
       # ...
       super(MyHandler, self).close()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...