Use colorama to control logging colours

这个提交包含在:
nmannall
2024-07-12 16:50:14 +01:00
父节点 8052d2a448
当前提交 f21c281bac

查看文件

@@ -21,6 +21,10 @@ import logging
import sys import sys
from copy import copy from copy import copy
from colorama import Back, Fore, Style, init
init()
logger = logging.getLogger(__name__) logger = logging.getLogger(__name__)
@@ -40,31 +44,29 @@ logging.Logger.basic = basic
# Colour mapping for different log levels # Colour mapping for different log levels
MAPPING = { MAPPING = {
"DEBUG": 37, # white "DEBUG": Fore.WHITE,
"BASIC": 37, # white "INFO": Fore.WHITE,
"INFO": 37, # white "BASIC": Fore.WHITE,
"WARNING": 33, # yellow "WARNING": Fore.YELLOW,
"ERROR": 31, # red "ERROR": Fore.RED,
"CRITICAL": 41, # white on red bg "CRITICAL": Fore.WHITE + Back.RED, # white on red bg
} }
PREFIX = "\033["
SUFFIX = "\033[0m"
class CustomFormatter(logging.Formatter): class CustomFormatter(logging.Formatter):
"""Logging Formatter to add colors and count warning / errors """Logging Formatter to add colors and count warning / errors
(https://stackoverflow.com/a/46482050).""" (https://stackoverflow.com/a/46482050)."""
def __init__(self, pattern): def __init__(self, pattern: str):
logging.Formatter.__init__(self, pattern) logging.Formatter.__init__(self, pattern)
def format(self, record): def format(self, record: logging.LogRecord) -> str:
colored_record = copy(record) colored_record = copy(record)
levelname = colored_record.levelname levelname = colored_record.levelname
seq = MAPPING.get(levelname, 37) # default white colour = MAPPING.get(levelname, Fore.BLUE) # default white
colored_levelname = f"{PREFIX}{seq}m{levelname}{SUFFIX}" colored_levelname = f"{colour}{levelname}{Style.RESET_ALL}"
colored_record.levelname = colored_levelname colored_record.levelname = colored_levelname
colored_record.msg = f"{PREFIX}{seq}m{colored_record.getMessage()}{SUFFIX}" colored_record.msg = f"{colour}{colored_record.getMessage()}{Style.RESET_ALL}"
return logging.Formatter.format(self, colored_record) return logging.Formatter.format(self, colored_record)