def test_bipolar_formatter(): """ Make sure the bipolar formatter calls the correct formatter. """ low_counter = FormatCounter('%(message)s') low_formatter = logging.Formatter(fmt=low_counter) high_counter = FormatCounter('%(message)s') high_formatter = logging.Formatter(fmt=high_counter) logger = logging.getLogger('test_bipolar_formatter') formatter = BipolarFormatter(low_formatter, high_formatter, logging.INFO, logger=logger) handler = logging.StreamHandler() handler.setFormatter(formatter) logger.addHandler(handler) assert logger is formatter.logger logger.setLevel(1) logger.info('boo') logger.error('baa') # Logger level <= cutoff, so both should go to low_counter assert low_counter.get_count() == 2 assert high_counter.get_count() == 0 logger.setLevel(logging.WARNING) logger.info('boo') logger.warning('baa') # Logger level > cutoff, so both should go to high_counter, but one of the # messages is too low priority to be shown. assert low_counter.get_count() == 2 assert high_counter.get_count() == 1
def test_bipolar_formatter_logger(): """ Make sure the bipolar logger picks the correct logger if none is given. """ low_counter = FormatCounter('%(message)s') low_formatter = logging.Formatter(fmt=low_counter) high_counter = FormatCounter('%(message)s') high_formatter = logging.Formatter(fmt=high_counter) formatter = BipolarFormatter(low_formatter, high_formatter, logging.INFO) handler = logging.StreamHandler() handler.setFormatter(formatter) logger = formatter.logger logger.addHandler(handler) expected_logger = logging.getLogger() assert expected_logger is logger
StyleAdapter, BipolarFormatter, CountingHandler, TypeAdapter, ) # Implement Logger LOGGER = TypeAdapter(logging.getLogger('polyply')) PRETTY_FORMATTER = logging.Formatter(fmt='{levelname:} - {type} - {message}', style='{') DETAILED_FORMATTER = logging.Formatter( fmt='{levelname:} - {type} - {name} - {message}', style='{') COUNTER = CountingHandler() # Control above what level message we want to count COUNTER.setLevel(logging.WARNING) CONSOLE_HANDLER = logging.StreamHandler() FORMATTER = BipolarFormatter(DETAILED_FORMATTER, PRETTY_FORMATTER, logging.DEBUG, logger=LOGGER) CONSOLE_HANDLER.setFormatter(FORMATTER) LOGGER.addHandler(CONSOLE_HANDLER) LOGGER.addHandler(COUNTER) LOGGER = StyleAdapter(LOGGER) LOGLEVELS = {0: logging.INFO, 1: logging.DEBUG, 2: 5}