File size: 1,435 Bytes
f43af3c |
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 55 |
import logging
import sys
import typing
from easy_tpp.utils.const import LogConst
# -------- log setting ---------
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 = {} # type: typing.Dict[str, logging.Logger]
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
# -------------------------- Singleton Object --------------------------
default_logger = get_logger(DEFAULT_LOGGER)
|