import logging.config def get_logger(level: int, name: str) -> logging.Logger: logging.config.dictConfig({ 'version': 1, 'disable_existing_loggers': False, 'formatters': { 'simple': { 'format': '[%(asctime)s] {%(filename)s:%(lineno)d} %(levelname)s - %(message)s', 'datefmt': '%Y-%m-%d %H:%M:%S', }, }, 'handlers': { 'console': { 'class': logging.StreamHandler, 'level': logging.DEBUG, 'formatter': 'simple', 'stream': 'ext://sys.stdout' }, }, 'loggers': { 'urllib3.connectionpool': { 'level': 'WARNING', 'propagate': False, }, 'root': { 'level': 'DEBUG', 'handlers': ['console'], }, }, }) logger = logging.getLogger(name) if level is not None: match level: case 0: logger.setLevel(logging.CRITICAL) logging.getLogger("requests").setLevel(logging.WARNING) logging.getLogger("urllib3").setLevel(logging.WARNING) case 1: logging.getLogger("requests").setLevel(logging.INFO) logging.getLogger("urllib3").setLevel(logging.INFO) logging.getLogger("stomp").setLevel(logging.INFO) logger.setLevel(logging.INFO) case 2: logger.setLevel(logging.DEBUG) logging.getLogger("requests").setLevel(logging.DEBUG) logging.getLogger("urllib3").setLevel(logging.DEBUG) case _: logger.setLevel(logging.INFO) logging.getLogger("requests").setLevel(logging.INFO) logging.getLogger("urllib3").setLevel(logging.INFO) return logger