все 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Сообщить о неточности