Spaces:
Configuration error
Configuration error
| # -*- coding: utf-8 -*- | |
| # @Time : 2024/9/13 20:30 | |
| # @Project : FasterLivePortrait | |
| # @FileName: logger.py | |
| import platform, sys | |
| import logging | |
| from datetime import datetime, timezone | |
| logging.getLogger("numba").setLevel(logging.WARNING) | |
| logging.getLogger("httpx").setLevel(logging.WARNING) | |
| logging.getLogger("wetext-zh_normalizer").setLevel(logging.WARNING) | |
| logging.getLogger("NeMo-text-processing").setLevel(logging.WARNING) | |
| colorCodePanic = "\x1b[1;31m" | |
| colorCodeFatal = "\x1b[1;31m" | |
| colorCodeError = "\x1b[31m" | |
| colorCodeWarn = "\x1b[33m" | |
| colorCodeInfo = "\x1b[37m" | |
| colorCodeDebug = "\x1b[32m" | |
| colorCodeTrace = "\x1b[36m" | |
| colorReset = "\x1b[0m" | |
| log_level_color_code = { | |
| logging.DEBUG: colorCodeDebug, | |
| logging.INFO: colorCodeInfo, | |
| logging.WARN: colorCodeWarn, | |
| logging.ERROR: colorCodeError, | |
| logging.FATAL: colorCodeFatal, | |
| } | |
| log_level_msg_str = { | |
| logging.DEBUG: "DEBU", | |
| logging.INFO: "INFO", | |
| logging.WARN: "WARN", | |
| logging.ERROR: "ERRO", | |
| logging.FATAL: "FATL", | |
| } | |
| class Formatter(logging.Formatter): | |
| def __init__(self, color=platform.system().lower() != "windows"): | |
| self.tz = datetime.now(timezone.utc).astimezone().tzinfo | |
| self.color = color | |
| def format(self, record: logging.LogRecord): | |
| logstr = "[" + datetime.now(self.tz).strftime("%z %Y%m%d %H:%M:%S") + "] [" | |
| if self.color: | |
| logstr += log_level_color_code.get(record.levelno, colorCodeInfo) | |
| logstr += log_level_msg_str.get(record.levelno, record.levelname) | |
| if self.color: | |
| logstr += colorReset | |
| if sys.version_info >= (3, 9): | |
| fn = record.filename.removesuffix(".py") | |
| elif record.filename.endswith(".py"): | |
| fn = record.filename[:-3] | |
| logstr += f"] {str(record.name)} | {fn} | {str(record.msg) % record.args}" | |
| return logstr | |
| def get_logger(name: str, lv=logging.INFO, remove_exist=False, format_root=False, log_file=None): | |
| logger = logging.getLogger(name) | |
| logger.setLevel(lv) | |
| # Remove existing handlers if requested | |
| if remove_exist and logger.hasHandlers(): | |
| logger.handlers.clear() | |
| # Console handler | |
| if not logger.hasHandlers(): | |
| syslog = logging.StreamHandler() | |
| syslog.setFormatter(Formatter()) | |
| logger.addHandler(syslog) | |
| # File handler | |
| if log_file: | |
| file_handler = logging.FileHandler(log_file) | |
| file_handler.setFormatter(Formatter(color=False)) # No color in file logs | |
| logger.addHandler(file_handler) | |
| # Reformat existing handlers if necessary | |
| for h in logger.handlers: | |
| h.setFormatter(Formatter()) | |
| # Optionally reformat root logger handlers | |
| if format_root: | |
| for h in logger.root.handlers: | |
| h.setFormatter(Formatter()) | |
| return logger | |