|
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 |