import logging import sys, os from systemd.journal import JournalHandler from colored import stylize, fore, Style, back from functools import partial from colored import set_tty_aware log_format = '%(asctime)s|%(levelname)s|%(filename)s⮞%(funcName)s⮞%(lineno)d|%(message)s' def get_logger(_name, file_path = None, stdout=False, systemd=False, level = logging.DEBUG): logger = logging.getLogger() logger.handlers.clear() env_level = os.getenv("LOGLEVEL") if env_level is not None: level = env_level if level is not None: logger.setLevel(level) formatter = logging.Formatter(log_format) if file_path is not None: file_handler = logging.FileHandler(file_path, mode='a') file_handler.setFormatter(formatter) file_handler.setLevel(logging.DEBUG) logger.addHandler(file_handler) if stdout: stdout_handler = logging.StreamHandler(sys.stdout) stdout_handler.setFormatter(formatter) stdout_handler.setLevel(logging.INFO) logger.addHandler(stdout_handler) if systemd: systemd_handler = JournalHandler() systemd_handler.setFormatter(formatter) logger.addHandler(systemd_handler) return logger def stylize_interface(text, fore_256=None, back_256=None, style=None): return fore(fore_256)+back(back_256)+style+text+Style.reset set_tty_aware(False) class LogColorize(object): watch_and_fix_permissions = partial(stylize_interface,fore_256='red',back_256='white', style=Style.BOLD) score_obj_det_orin = partial(stylize_interface, fore_256='red', back_256='green', style=Style.BOLD) remove_without_nuggets = partial(stylize_interface, fore_256='red', back_256='grey_78', style=Style.BOLD) embeds_in_db =partial(stylize_interface, fore_256='green', back_256='black', style=Style.BOLD) video_meta = partial(stylize_interface, fore_256='blue', back_256='black', style=Style.BOLD)