logging — журналювання подій¶
Цей модуль надає легковажну підмножину стандартного пакета Python logging, адаптовану для 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.