Python Glossary English

все Python 3loggingфункция

logging.setLoggerClass()

логгеры

Задаёт класс, экземпляры которого будет создавать getLogger(). Так подключают свой подкласс Logger с дополнительными методами.

Синтаксис

logging.setLoggerClass(klass)

Действует только на логгеры, созданные после вызова: getLogger() для уже существующего имени вернёт старый объект прежнего класса. Поэтому вызывают её в самом начале программы, до импорта модулей, заводящих логгеры. Класс обязан наследовать Logger, иначе будет TypeError, а сами логгеры по-прежнему получают через getLogger(), а не конструктором.

Примеры

import logging, sys
class AppLogger(logging.getLoggerClass()):
    def notice(self, msg):
        self.log(25, msg)
early = logging.getLogger('early')
logging.setLoggerClass(AppLogger)
log = logging.getLogger('app')
logging.basicConfig(stream=sys.stdout, format='%(message)s')
log.notice('работает')  # → работает
print(type(early).__name__, type(log).__name__)  # → Logger AppLogger
import logging
try:
    logging.setLoggerClass(dict)
except TypeError as e:
    print(e)  # → logger not derived from logging.Logger: dict

См. также

Частые ошибки

Открыть в полном глоссарииdocs.python.orgСообщить о неточности