Я пытаюсь использовать цветные логи для добавления цвета в консоль. Таким образом, код создает StreamHandler для консоли и добавляет фильтр. Это само по себе работает. НО цветные журналы добавляют еще один дубликат вывода, который не фильтруется. Кажется, он проходит через sys.err, но фильтр его не перехватывает.
Как добавить фильтр в файл цветного журнала?
import logging
from func import std_func
import sys
import coloredlogs
class BlockFilter(logging.Filter):
def filter(self, record):
allow = True
if record.msg.startswith('Hello'):
allow = False
return allow
def std_func(val):
log = logging.getLogger('')
log.warning('Hello world.')
return val * 2.0
def config_logging():
block_filter = BlockFilter()
sh = logging.StreamHandler(sys.stdout)
sh.addFilter(block_filter)
sh.setLevel(logging.INFO)
logger = logging.getLogger('') # root logger
logger.addHandler(sh)
def main():
config_logging()
coloredlogs.install(logger=logging.getLogger(''))
result = std_func(3.12)
print(result)
if __name__ == "__main__":
main()
Вывод из журнала цветного журнала всегда содержит «Привет мир», который я пытаюсь отфильтровать. Есть идеи?