iact3/logger.py (54 lines of code) (raw):
import logging
LOG = logging.getLogger(__name__)
class PrintMsg:
header = "\x1b[1;41;0m"
highlight = "\x1b[0;30;47m"
name_color = "\x1b[0;37;44m"
aqua = "\x1b[0;30;46m"
green = "\x1b[0;30;42m"
white = "\x1b[0;30;47m"
orange = "\x1b[0;30;43m"
red = "\x1b[0;30;41m"
rst_color = "\x1b[0m"
blod = "\033[1m"
text_red = "\033[31m"
text_green = "\033[32m"
text_red_background_write = "\033[31;47m"
CRITICAL = "{}[FATAL ]{} : ".format(red, rst_color)
ERROR = "{}[ERROR ]{} : ".format(red, rst_color)
DEBUG = "{}[DEBUG ]{} : ".format(aqua, rst_color)
PASS = "{}[PASS ]{} : ".format(green, rst_color)
INFO = "{}[INFO ]{} : ".format(white, rst_color)
WARNING = "{}[WARN ]{} : ".format(orange, rst_color)
left_top = "\u250f"
right_top = "\u2513"
left = "\u2523"
left_bottom = "\u2517"
right = "\u252B"
right_bottom = "\u251B"
top = "\u2501"
class AppFilter(logging.Filter):
def filter(self, record):
default = PrintMsg.INFO
record.color_loglevel = getattr(PrintMsg, record.levelname, default)
return True
def init_cli_logger(loglevel=None, log_prefix=None, logger=None):
if logger:
log = logger
else:
log = logging.getLogger(__package__)
if log.hasHandlers():
for handler in log.handlers:
log.removeHandler(handler)
cli_handler = logging.StreamHandler()
fmt = "%(asctime)s %(color_loglevel)s%(message)s"
if log_prefix:
fmt = f"%(asctime)s {log_prefix} %(color_loglevel)s%(message)s"
formatter = logging.Formatter(fmt)
cli_handler.setFormatter(formatter)
cli_handler.addFilter(AppFilter())
log.addHandler(cli_handler)
if loglevel:
loglevel = getattr(logging, loglevel.upper(), 20)
log.setLevel(loglevel)
return log