Python Glossary English

все Python 3loggingпонятие

logging.Filter

записи и фильтры

Фильтр записей лога: по умолчанию пропускает записи только от логгера с заданным именем и его потомков.

Синтаксис

flt = logging.Filter(name=''); handler.addFilter(flt)

Имя сравнивается по точечной иерархии, а не как префикс строки: Filter('app') пропустит 'app.db', но не 'application'. Фильтр, повешенный на логгер, не видит записи, всплывающие от дочерних логгеров, — чтобы фильтровать всё, вешайте его на обработчик. Фильтром может быть любая функция, принимающая запись, а с 3.12 она может вернуть изменённую запись вместо True.

Примеры

import logging
f = logging.Filter('app')
for name in ('app', 'app.db', 'application'):
    print(name, bool(f.filter(logging.makeLogRecord({'name': name}))))  # → app True / app.db True / application False
import logging, sys
h = logging.StreamHandler(sys.stdout)
h.addFilter(lambda r: 'пароль' not in r.getMessage())  # функция тоже фильтр
log = logging.getLogger('demo')
log.addHandler(h)
log.warning('пароль: 123')
log.warning('вход выполнен')  # → вход выполнен

См. также

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