import logging import copy import sys from modules import shared from reactor_utils import addLoggingLevel class ColoredFormatter(logging.Formatter): COLORS = { "DEBUG": "\033[0;36m", # CYAN "STATUS": "\033[38;5;173m", # Calm ORANGE "INFO": "\033[0;32m", # GREEN "WARNING": "\033[0;33m", # YELLOW "ERROR": "\033[0;31m", # RED "CRITICAL": "\033[0;37;41m", # WHITE ON RED "RESET": "\033[0m", # RESET COLOR } def format(self, record): colored_record = copy.copy(record) levelname = colored_record.levelname seq = self.COLORS.get(levelname, self.COLORS["RESET"]) colored_record.levelname = f"{seq}{levelname}{self.COLORS['RESET']}" return super().format(colored_record) # Create a new logger logger = logging.getLogger("ReActor") logger.propagate = False # Add Custom Level # logging.addLevelName(logging.INFO, "STATUS") addLoggingLevel("STATUS", logging.INFO + 5) # Add handler if we don't have one. if not logger.handlers: handler = logging.StreamHandler(sys.stdout) handler.setFormatter( ColoredFormatter("[%(name)s] %(asctime)s - %(levelname)s - %(message)s",datefmt="%H:%M:%S") ) logger.addHandler(handler) # Configure logger loglevel_string = getattr(shared.cmd_opts, "reactor_loglevel", "INFO") loglevel = getattr(logging, loglevel_string.upper(), "info") logger.setLevel(loglevel)