import logging
import colorama


class NoTracebackStreamHandler(logging.StreamHandler):
    def handle(self, record):
        info, cache = record.exc_info, record.exc_text
        record.exc_info, record.exc_text = None, None

        if record.levelname in ["WARNING", "WARN"]:
            color = colorama.Fore.LIGHTYELLOW_EX
        elif record.levelname == "ERROR":
            color = colorama.Fore.LIGHTRED_EX
        elif record.levelname == "INFO":
            color = colorama.Fore.LIGHTGREEN_EX
        elif record.levelname == "CRITICAL":
            color = colorama.Fore.LIGHTCYAN_EX
        else:
            color = colorama.Fore.WHITE

        try:
            print(color, end="", flush=True)
            super().handle(record)
        finally:
            record.exc_info = info
            record.exc_text = cache
            print(colorama.Style.RESET_ALL, end="", flush=True)