Skip to content

Instantly share code, notes, and snippets.

@dmitryhd
Last active June 27, 2019 20:55
Show Gist options
  • Select an option

  • Save dmitryhd/68f2a71fb2832643217c17e61a78b214 to your computer and use it in GitHub Desktop.

Select an option

Save dmitryhd/68f2a71fb2832643217c17e61a78b214 to your computer and use it in GitHub Desktop.
python colored logs
class Color:
"""
https://misc.flogisoft.com/bash/tip_colors_and_formatting
https://gist.github.com/dmitryhd/68f2a71fb2832643217c17e61a78b214
"""
COLOR = '\033['
BOLD = '\033[1m'
RESET = '\033[0m'
DIM = '\e[2m'
BLINK = '\e[5m'
UNDERLINED = '\e[4m'
RED = COLOR + '31m'
GREEN = COLOR + '32m'
YELLOW = COLOR + '33m'
BLUE = COLOR + '34m'
MAGENTA = COLOR + '35m'
CYAN = COLOR + '36m'
GRAY = COLOR + '37m'
DARK_GRAY = COLOR + '90m'
class ColoredFormatter(logging.Formatter):
COLORS = {
'WARNING': Color.YELLOW,
'INFO': Color.BLUE,
'DEBUG': Color.GRAY,
'CRITICAL': Color.RED,
'ERROR': Color.RED,
}
def format(self, record):
levelname = record.levelname
if levelname in self.COLORS:
record.levelname = '%s%7s%s' % (self.COLORS[levelname], levelname, Color.RESET_SEQ)
return logging.Formatter.format(self, record)
def setup_logger(name: str, logger_config: dict = None) -> logging.Logger:
logger_config = logger_config or {}
logger_config.setdefault('use_json_formatter', True)
logger_config.setdefault('tag', 'default')
logger_config.setdefault('level', 'warning')
logger = logging.getLogger(name)
logger.handlers = []
level = logger_config['level']
level = avito_python_log.get_log_level_by_name(level)
logger.setLevel(level)
if logger_config['use_json_formatter']:
handler = avito_python_log.JsonToStdErrHandler(logger_config['tag'])
handler.setLevel(level)
formatter = avito_python_log.JsonRecordFormatter()
handler.setFormatter(formatter)
logger.addHandler(handler)
else:
ch = logging.StreamHandler(sys.stderr)
ch.setLevel(level)
formatter = ColoredFormatter('%(asctime)s.%(msecs)03d %(levelname)12s : %(message)s', '%H:%M:%S')
ch.setFormatter(formatter)
logger.addHandler(ch)
return logger
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment