Spaces:
Sleeping
Sleeping
| import platform | |
| import logging | |
| from datetime import datetime, timezone | |
| # from https://github.com/FloatTech/ZeroBot-Plugin/blob/c70766a989698452e60e5e48fb2f802a2444330d/console/console_windows.go#L89-L96 | |
| 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"): | |
| # https://stackoverflow.com/questions/2720319/python-figure-out-local-timezone | |
| 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 | |
| logstr += f"] {str(record.name)} | {str(record.msg)}" | |
| return logstr | |
| def get_logger(name: str, lv = logging.INFO): | |
| logger = logging.getLogger(name) | |
| syslog = logging.StreamHandler() | |
| syslog.setFormatter(Formatter()) | |
| logger.setLevel(lv) | |
| logger.addHandler(syslog) | |
| return logger | |