import os, sys sys.path.append(os.path.dirname(os.path.realpath(__file__))) import logging from dataclasses import dataclass @dataclass class Colors: grey: str = "\x1b[38;20m" blue: str = "\x1b[34;20m" bold_blue: str = "\x1b[34;1m" yellow: str = "\x1b[33;20m" red: str = "\x1b[31;20m" bold_red: str = "\x1b[31;1m" reset: str = "\x1b[0m" class ColorFormatter(logging.Formatter): colors = Colors() format = "[%(asctime)s %(name)s %(levelname)s] %(message)s" datefmt="%Y-%m-%d %H:%M:%S" FORMATS = { logging.DEBUG: colors.grey + format + colors.reset, logging.INFO: colors.grey + format + colors.reset, logging.WARNING: colors.yellow + format + colors.reset, logging.ERROR: colors.red + format + colors.reset, logging.CRITICAL: colors.bold_red + format + colors.reset } def format(self, record): log_fmt = self.FORMATS.get(record.levelno) formatter = logging.Formatter(log_fmt, datefmt=self.datefmt) return formatter.format(record) formatter = logging.Formatter( fmt="[%(asctime)s %(name)s %(levelname)s] %(message)s", datefmt="%Y-%m-%d %H:%M:%S", ) handler = logging.StreamHandler() handler.setFormatter(ColorFormatter()) handler.setLevel(logging.INFO) logger = logging.getLogger("mia") logger.setLevel(logging.INFO) logger.addHandler(handler) logger.propagate = False