import logging import sys enabled = [] disabled = ["init", "sdp", "parsers", "evaluators", "verbose", "stats"] console_handler = logging.StreamHandler(sys.stdout) all_loggers = {} def init_config(loggers): if loggers is None: return if not hasattr(loggers, "__iter__"): loggers = [loggers] if "all" in loggers: disabled.clear() for logger in loggers: if logger == "all": continue if logger.startswith("-"): disabled.append(logger[1:]) elif logger.startswith("+"): enabled.append(logger[1:]) else: enabled.append(logger) def to_discard(logger_class): if logger_class is None: return False if logger_class in enabled or logger_class.strip(".") in enabled: return False if logger_class not in disabled: return False return True def get_logger(logger_name): if logger_name in all_loggers: return all_loggers[logger_name] logger = logging.getLogger(logger_name) all_loggers[logger_name] = logger for d in disabled: if (logger_name == d or logger_name.startswith(d + ".")) and to_discard(d): logger.disabled = True for e in enabled: if logger_name.startswith("verbose." + e): logger.disabled = False return logger