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