Should I reuse a handler between loggers? It looks like I can: import logging import sys fmt = logging.Formatter('My little handler:\t%(message)s') handler = logging.StreamHandler(sys.stdout) # for testing purposes (in reality this goes to a log file) handler.setFormatter(fmt) logger_1 = logging.getLogger("Numero uno") logger_1.addHandler(handler) logger_1.setLevel(logging.INFO) logger_2 = logging.getLogger("Numero duo") logger_2.addHandler(handler) logger_2.setLevel(logging.DEBUG) logger_1.info("Info to 1") logger_2.info("Info to 2") logger_1.debug("Debug to 1") logger_2.debug("Debug to 2") # Output is as expected: # My little handler: Info to 1 # My little handler: Info to 2 # My little handler: Debug to 2 But should I? Is there anything that could go wrong with such a setup? In case it matters, my intended use case is as follows many loggers (one per module) two handlers per logger one handler shared by all loggers: everything of level INFO or more is written to main.log, with a consistent formatting one logger-specific handler: everything (even DEBUG statements) from module foo is written to foo.log (but formatting may be different across modules/loggers). Continue reading...