44 lines
1.7 KiB
Python
44 lines
1.7 KiB
Python
import logging
|
|
|
|
class ColoredFormatter(logging.Formatter):
|
|
"""Colored formatter for the logging package."""
|
|
|
|
def __init__(
|
|
self, fmt=None, datefmt=None, style="%", validate=True, *, defaults=None
|
|
):
|
|
"""Colored formatter for the logging package."""
|
|
fmt = fmt or "%(levelname)s: %(message)s"
|
|
super().__init__(fmt, datefmt, style, validate, defaults=defaults)
|
|
colors = {
|
|
"red": "\x1b[31;20m",
|
|
"bold_red": "\x1b[31;1m",
|
|
"green": "\x1b[32;20m",
|
|
"bold_green": "\x1b[32;1m",
|
|
"yellow": "\x1b[33;20m",
|
|
"bold_yellow": "\x1b[33;1m",
|
|
"blue": "\x1b[34;20m",
|
|
"bold_blue": "\x1b[34;1m",
|
|
"grey": "\x1b[37;20m",
|
|
"bold_grey": "\x1b[37;1m",
|
|
"reset": "\x1b[0m",
|
|
}
|
|
self._default_formatter = logging.Formatter(fmt)
|
|
self._formatters = {
|
|
100: logging.Formatter(colors["bold_blue"] + fmt + colors["reset"]),
|
|
logging.DEBUG: logging.Formatter(colors["grey"] + fmt + colors["reset"]),
|
|
logging.INFO: logging.Formatter(colors["green"] + fmt + colors["reset"]),
|
|
logging.WARNING: logging.Formatter(
|
|
colors["yellow"] + fmt + colors["reset"]
|
|
),
|
|
logging.ERROR: logging.Formatter(colors["red"] + fmt + colors["reset"]),
|
|
logging.CRITICAL: logging.Formatter(
|
|
colors["bold_red"] + fmt + colors["reset"]
|
|
),
|
|
}
|
|
|
|
def format(self, record):
|
|
"""Override of logging.Formatter.format"""
|
|
return self._formatters.get(record.levelno, self._default_formatter).format(
|
|
record
|
|
)
|