|
|
import logging |
|
|
import sys |
|
|
import typing |
|
|
|
|
|
from easy_tpp.utils.const import LogConst |
|
|
|
|
|
|
|
|
DEFAULT_LOGGER = "easytpp.logger" |
|
|
|
|
|
|
|
|
class CustomFormatter(logging.Formatter): |
|
|
grey = "\x1b[38;20m" |
|
|
yellow = "\x1b[33;20m" |
|
|
red = "\x1b[31;20m" |
|
|
bold_red = "\x1b[31;1m" |
|
|
reset = "\x1b[0m" |
|
|
format = LogConst.DEFAULT_FORMAT_LONG |
|
|
|
|
|
FORMATS = { |
|
|
logging.DEBUG: grey + format + reset, |
|
|
logging.INFO: grey + format + reset, |
|
|
logging.WARNING: yellow + format + reset, |
|
|
logging.ERROR: red + format + reset, |
|
|
logging.CRITICAL: bold_red + format + reset |
|
|
} |
|
|
|
|
|
def format(self, record): |
|
|
log_fmt = self.FORMATS.get(record.levelno) |
|
|
formatter = logging.Formatter(log_fmt) |
|
|
return formatter.format(record) |
|
|
|
|
|
|
|
|
DEFAULT_FORMATTER = CustomFormatter() |
|
|
|
|
|
_ch = logging.StreamHandler(stream=sys.stdout) |
|
|
_ch.setFormatter(DEFAULT_FORMATTER) |
|
|
|
|
|
_DEFAULT_HANDLERS = [_ch] |
|
|
|
|
|
_LOGGER_CACHE = {} |
|
|
|
|
|
|
|
|
def get_logger(name, level="INFO", handlers=None, update=False): |
|
|
if name in _LOGGER_CACHE and not update: |
|
|
return _LOGGER_CACHE[name] |
|
|
logger = logging.getLogger(name) |
|
|
logger.setLevel(level) |
|
|
logger.handlers = handlers or _DEFAULT_HANDLERS |
|
|
logger.propagate = False |
|
|
return logger |
|
|
|
|
|
|
|
|
|
|
|
default_logger = get_logger(DEFAULT_LOGGER) |
|
|
|