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