import logging
from pathlib import Path
from gvasp.common.constant import RESET, BOLD, DATE, YELLOW, WHITE, BLUE, RED
from gvasp.common.setting import ConfigManager
COLORS = {
'WARNING': YELLOW,
'INFO': WHITE,
'DEBUG': BLUE,
'CRITICAL': YELLOW,
'ERROR': RED
}
[docs]class ColoredLogger(logging.Logger):
FORMAT = "%(asctime)s ($BOLD%(filename)s$RESET:%(lineno)d) [$BOLD%(name)s$RESET][%(levelname)s] %(message)s"
COLOR_FORMAT = formatter_message(FORMAT, True)
FILE_FORMAT = formatter_message(FORMAT, False)
LogDir = ConfigManager().logdir
try:
Path.mkdir(LogDir, exist_ok=True)
except NotADirectoryError:
print("Create logdir error, because it is not a directory")
def __init__(self, name):
super(ColoredLogger, self).__init__(name)
file_formatter = ColoredFormatter(self.FILE_FORMAT, False)
color_formatter = ColoredFormatter(self.COLOR_FORMAT, True)
fh = logging.FileHandler(f"{self.LogDir}/{DATE}.txt")
fh.setFormatter(file_formatter)
ch = logging.StreamHandler()
ch.setFormatter(color_formatter)
self.addHandler(fh)
self.addHandler(ch)
[docs]def init_root_logger(name=None, level=logging.INFO):
logging.setLoggerClass(ColoredLogger)
root_logger = logging.getLogger(name)
root_logger.setLevel(level=level)