| import logging | |
| from termcolor import colored | |
| class LiberoColorFormatter(logging.Formatter): | |
| """This color format is for logging user's project wise information""" | |
| format_str = "[Project %(levelname)s] " | |
| debug_message_str = "%(message)s (%(filename)s:%(lineno)d)" | |
| message_str = "%(message)s" | |
| FORMATS = { | |
| logging.DEBUG: format_str + debug_message_str, | |
| logging.INFO: message_str, | |
| logging.WARNING: colored(format_str, "yellow", attrs=["bold"]) + message_str, | |
| logging.ERROR: colored(format_str, "red", attrs=["bold"]) + message_str, | |
| logging.CRITICAL: colored(format_str, "red", attrs=["bold", "reverse"]) | |
| + message_str, | |
| } | |
| def format(self, record): | |
| log_fmt = self.FORMATS.get(record.levelno) | |
| formatter = logging.Formatter(log_fmt) | |
| return formatter.format(record) | |
| class LiberoDefaultLogger: | |
| def __init__(self, logger_config_path, project_name="libero"): | |
| config = YamlConfig(logger_config_path).as_easydict() | |
| config["loggers"][project_name] = config["loggers"]["project"] | |
| os.makedirs("logs", exist_ok=True) | |
| logging.config.dictConfig(config) | |
| ProjectDefaultLogger(logger_config_path, project_name) | |
| def get_project_logger(project_name="libero", logger_config_path=None): | |
| """This function returns a logger that follows the deoxys convention""" | |
| logger = logging.getLogger(project_name) | |
| return logger | |