logging — журналирование событий#
Этот модуль предоставляет облегчённое подмножество стандартного пакета logging из Python, адаптированное для MicroPython. Он поддерживает журналирование по уровням через иерархически именованные объекты Logger, небольшой набор обработчиков (StreamHandler, FileHandler), форматирование в стиле printf через Formatter, а также удобные функции уровня модуля, эквивалентные тем, что работают с корневым логгером.
Модуль достаточно близко следует знакомому API CPython, так что простые приложения, написанные для стандартной библиотеки, должны работать без изменений. Фильтры, блокировки для нескольких процессов, формат конфигурационного файла и большинство классов обработчиков не предоставляются.
Константы уровней#
Функции#
- logging.getLogger(name: str | None = None) Logger#
Возвращает
Logger, зарегистрированный под именем name, создавая его при первом использовании. Если name равноNone, возвращается корневой логгер. Первый вызов сname="root"(или с неуказанным name) неявно вызываетbasicConfig, чтобы присоединитьStreamHandlerпо умолчанию, пишущий вsys.stderr.
- logging.log(level: int, msg: str, *args) None#
Журналирует сообщение с уровнем level на корневом логгере. Аргументы args подставляются в msg с использованием форматирования в стиле printf через
%; единственный аргумент-словарь используется как отображение.
- logging.exception(msg: str, *args, exc_info: bool | BaseException = True) None#
Эквивалентно
getLogger().exception(msg, *args, exc_info=exc_info). Журналирует сообщение с уровнемERRORи дополнительно форматирует трассировку активного исключения, когда exc_info истинно. Если exc_info само являетсяBaseException, используется трассировка этого исключения; иначе при наличии вызываетсяsys.exc_info().
- logging.shutdown() None#
Закрывает каждый обработчик, присоединённый к каждому известному логгеру, и забывает логгеры. Регистрируется автоматически через
sys.atexit, когда этот хук доступен.
- logging.addLevelName(level: int, name: str) None#
Связывает текстовое имя name с числовым уровнем level, чтобы
Formatterмог отобразить его через%(levelname)s.
- logging.basicConfig(filename: str | None = None, filemode: str = 'a', format: str | None = None, datefmt: str | None = None, level: int = WARNING, stream=None, encoding: str = 'UTF-8', force: bool = False) None#
Настраивает корневой логгер с единственным обработчиком.
Если задан filename, создаётся
FileHandlerс использованием filemode и encoding; иначе используетсяStreamHandler, пишущий в stream (по умолчаниюsys.stderr).Параметры format и datefmt передаются в новый
Formatter.Параметр level задаёт уровень как обработчика, так и корневого логгера.
Если у корневого логгера уже есть обработчики, эта функция ничего не делает, если только force не равно
True— в этом случае существующие обработчики закрываются и заменяются.
Классы#
- class logging.Logger(name: str, level: int = NOTSET)#
Именованный логгер. Создавайте логгеры через
getLogger, а не напрямую, чтобыgetLoggerмог возвращать один и тот же экземпляр для одного и того же имени.- handlers: list#
Список экземпляров
Handler, присоединённых к этому логгеру. Когда он пуст, сообщения направляются обработчикам корневого логгера.
- isEnabledFor(level: int) bool#
Возвращает
True, если сообщение уровня level будет обработано этим логгером.
- getEffectiveLevel() int#
Возвращает первое ненулевое из: уровня этого логгера, уровня корневого логгера или
WARNING.
- log(level: int, msg: str, *args) None#
Журналирует msg с уровнем level. Аргументы args подставляются в msg с помощью оператора
%; если первый позиционный аргумент является словарём, он используется как отображение.
- exception(msg: str, *args, exc_info: bool | BaseException = True) None#
Журналирует msg с уровнем
ERRORи, когда exc_info истинно, добавляет отформатированную трассировку. Если exc_info является экземпляромBaseException, отображается трассировка этого исключения; иначе активное исключение запрашивается черезsys.exc_info().
- class logging.Handler(level: int = NOTSET)#
Базовый класс для всех обработчиков. Подклассы реализуют
emit().- close() None#
Освобождает ресурсы, удерживаемые обработчиком. Вызывается из
shutdownи изFileHandlerпри его закрытии.
- class logging.StreamHandler(stream=None)#
Обработчик, который записывает отформатированные записи, за которыми следует
self.terminator(по умолчанию"\n"), в stream. По умолчанию stream равенsys.stderr.- stream#
Объект целевого потока.
- class logging.FileHandler(filename: str, mode: str = 'a', encoding: str = 'UTF-8')#
Подкласс
StreamHandler, который открывает filename с заданными mode и encoding и записывает в него отформатированные записи. Нижележащий файл закрывается приclose().
- class logging.Formatter(fmt: str | None = None, datefmt: str | None = None)#
Отображает экземпляры
LogRecordв строки.fmt — это шаблон в стиле printf. Распознаваемые ключи:
%(name)s,%(message)s,%(msecs)d,%(asctime)sи%(levelname)s. Если не задан, по умолчанию используется"%(levelname)s:%(name)s:%(message)s".datefmt — это шаблон
time.strftime, используемый для отображения%(asctime)s. По умолчанию"%Y-%m-%d %H:%M:%S".- formatTime(datefmt: str, record: LogRecord) str | None#
Форматирует
record.ctс использованиемtime.strftimeи datefmt. ВозвращаетNoneна платформах, гдеtime.strftimeнедоступен.
- format(record: LogRecord) str#
Отображает record. Если шаблон использует
asctime, сначала вызываетсяformatTime(), чтобы заполнитьrecord.asctime.