Python logging split between stdout and stderr

22,561

This seems to do what I want:

#!/usr/bin/python
import sys
import logging


class InfoFilter(logging.Filter):
    def filter(self, rec):
        return rec.levelno in (logging.DEBUG, logging.INFO)


logger = logging.getLogger("__name__")
logger.setLevel(logging.DEBUG)

h1 = logging.StreamHandler(sys.stdout)
h1.setLevel(logging.DEBUG)
h1.addFilter(InfoFilter())
h2 = logging.StreamHandler()
h2.setLevel(logging.WARNING)

logger.addHandler(h1)
logger.addHandler(h2)
Share:
22,561
crosswired
Author by

crosswired

Updated on March 20, 2020

Comments

  • crosswired
    crosswired over 4 years

    Is it possible to have python logging messages which are INFO or DEBUG to go to stdout and WARNING or greater to go to stderr?