python-logging-cookbook
Installation
SKILL.md
Python Logging Cookbook
A LogRecord propagates up the logger hierarchy (unless propagate=False). Each handler gates by its own level + filters; the logger's level is only an initial cutoff.
Handler routing with level caps
logger = logging.getLogger('app'); logger.setLevel(logging.DEBUG)
fh = logging.FileHandler('debug.log'); fh.setLevel(logging.DEBUG)
ch = logging.StreamHandler(); ch.setLevel(logging.ERROR)
class MaxLevel(logging.Filter):
def __init__(self, lvl): self.lvl = lvl
def filter(self, r): return r.levelno <= self.lvl
fh.addFilter(MaxLevel(logging.WARNING)) # file: DEBUG–WARNING only
logger.addHandler(fh); logger.addHandler(ch)