import logging
class MaxLevelFilter(logging.Filter):
def __init__(self, max_level=None):
self.max = logging._checkLevel(max_level)
def filter(self, record):
return record.levelno <= self.max
import sys
logger = logging.getLogger()
logger.setLevel(logging.DEBUG)
stdout = logging.StreamHandler(sys.stdout)
stdout.setLevel("DEBUG")
stdout.addFilter(MaxLevelFilter("INFO"))
stderr = logging.StreamHandler(sys.stderr)
stderr.setLevel("WARNING")
logger.addHandler(stdout)
logger.addHandler(stderr)
logger.info('INFO')
logger.error('ERROR')
$ python3 max_filter.py
INFO
ERROR
$ python3 max_filter.py > /dev/null
ERROR
$ python3 max_filter.py 2> /dev/null
INFO