Сообщить об ошибке.

Объект Handler, обработчик модуля logging

Обратите внимание, что обработчики logging.Handler никогда не создается напрямую. Этот класс служит основой для более полезных подклассов.

В создаваемых подклассах метод конструктора __init__() должен вызывать Handler.__init__().

Пакет logging предоставляет несколько полезных обработчиков, созданных на основе базового обработчика Handler:

  • Основные обработчики StreamHandler, FileHandler,
  • WatchedFileHandler - отправляет данные журнала в файл, который реагирует на каждое изменение,
  • RotatingFileHandler - отправляет данные журнала в файлы с ротацией, основываясь на их объеме,
  • TimedRotatingFileHandler - отправляет данные журнала в файлы с ротацией, основываясь на отрезке времени,
  • SMTPHandler - отправляет данные журнала на почту,
  • HTTPHandler - отправляет данные журнала как POST и GET запросы,

Обьект Handler имеет следующие атрибуты и методы.


Handler.__init__(level=NOTSET):

Метод Handler.__init__() инициализирует экземпляр обработчика Handler, устанавливая его level, устанавливает список фильтров в пустой список [] и создает блокировку, используя Handler.createLock(), для сериализации доступа к механизму ввода-вывода.

Handler.createLock():

Метод Handler.createLock() инициализирует блокировку потока, которая может использоваться для сериализации доступа к базовым функциям ввода-вывода, которые могут быть не безопасными для потоков.

Handler.acquire():

Метод Handler.acquire() получает блокировку потока, созданную с помощью Handler.createLock().

Handler.release():

Метод Handler.release() снимает блокировку потока, полученную с Handler.acquire().

Handler.setLevel(level):

Метод Handler.setLevel() устанавливает порог логирования level для этого обработчика.

Сообщения, которые менее серьезны, чем уровень level, будут игнорироваться. Когда создается обработчик, устанавливается уровень NOTSET, что приводит к обработке всех сообщений.

Handler.setFormatter(fmt):

Метод Handler.setFormatter() устанавливает logging.Formatter для этого обработчика в значение fmt.

Handler.addFilter(filter):

Метод Handler.addFilter() добавляет указанный фильтр filter к этому обработчику Handler.

Handler.removeFilter(filter):

Метод Handler.removeFilter() удаляет указанный фильтр filter из этого обработчика Handler.

Handler.filter(record):

Метод Handler.filter() применяет фильтры этого обработчика к записи record и возвращает True, если она должна быть обработана.

Фильтры применяются по очереди, пока один из них не возвращает ложное значение. Если ни один не возвращает ложное значение, то запись будет обработана, т.е. передана обработчикам. Если возвращается ложное значение, дальнейшая обработка записи не происходит.

Handler.flush():

Метод Handler.flush() сбрасывает все выходные данные журнала. Эта версия ничего не делает и предназначена для реализации подклассами.

Handler.close():

Метод Handler.close() освобождает любые ресурсы, используемые обработчиком. Эта версия удаляет обработчик из внутреннего списка обработчиков, который закрывается при logging.shutdown(). Подклассы должны гарантировать, что этот метод вызывается из переопределенного метода close().

Handler.handle(record):

Метод Handler.handle() условно выдает указанную запись record журнала в зависимости от фильтров, которые могли быть добавлены в обработчик. Обертывает фактическую эмиссию записи с получением/снятием блокировки потока ввода/вывода.

Handler.handleError(record):

Метод Handler.handleError() должен вызываться из обработчиков, когда во время вызова метода Handler.emit() встречается исключение. Если атрибут levelExceptions уровня модуля равен False, то исключения автоматически игнорируются.

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

Указанная запись record является той, которая обрабатывалась при возникновении исключения. Значением по умолчанию для параметра levelExceptions является True, поскольку это более полезно при разработке.

Handler.format(record):

Метод Handler.format() делает форматирование для записи. Если установлен logging.Formatter(), то используйте его. В противном случае использует форматирование, установленное по умолчанию для модуля.

Handler.emit(record):

Метод Handler.emit() делает все возможное, чтобы фактически зарегистрировать указанную запись в журнале. Эта версия предназначена для реализации подклассами и поэтому вызывает ошибку NotImplementedError.