ADTTools/RecreateAdtInstance/jlog.py (40 lines of code) (raw):

import logging from tqdm import tqdm from halo import Halo class ProgressBar: @staticmethod def new(total, msg): return tqdm(total=total, desc=msg, leave=False, bar_format="{l_bar}{bar}", colour="yellow") class Spinner: @staticmethod def new(msg): return Halo(text=msg, spinner="dots", placement="right") class LogFormat(logging.Formatter): grey = "\x1b[38;20m" green = "\x1b[32;20m" yellow = "\x1b[33;20m" red = "\x1b[31;20m" bold_red = "\x1b[31;1m" reset = "\x1b[0m" format = "%(levelname)s - %(asctime)s - %(name)s: %(message)s" FORMATS = { logging.DEBUG: green + format + reset, logging.INFO: green + format + reset, logging.WARNING: yellow + format + reset, logging.ERROR: red + format + reset, logging.CRITICAL: bold_red + format + reset } def format(self, record): log_fmt = self.FORMATS.get(record.levelno) formatter = logging.Formatter(log_fmt) return formatter.format(record) logger = logging.getLogger("RecreateAdtInstance") logger.setLevel(logging.DEBUG) console_handler = logging.StreamHandler() console_handler.setLevel(logging.DEBUG) console_handler.setFormatter(LogFormat()) logger.addHandler(console_handler)