|
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): |
|
logger = logging.getLogger(name) |
|
logger.setLevel(lv) |
|
if remove_exist and logger.hasHandlers(): |
|
logger.handlers.clear() |
|
if not logger.hasHandlers(): |
|
syslog = logging.StreamHandler() |
|
syslog.setFormatter(Formatter()) |
|
logger.addHandler(syslog) |
|
else: |
|
for h in logger.handlers: |
|
h.setFormatter(Formatter()) |
|
if format_root: |
|
for h in logger.root.handlers: |
|
h.setFormatter(Formatter()) |
|
return logger |
|
|