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.