Spaces:
Sleeping
Sleeping
File size: 1,753 Bytes
fc31c67 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 |
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
|