Fix log colors
This commit is contained in:
parent
818eaaf96a
commit
5ff9aa0edb
1 changed files with 34 additions and 32 deletions
|
|
@ -6,6 +6,36 @@ import sys
|
||||||
import time
|
import time
|
||||||
|
|
||||||
|
|
||||||
|
class ConsoleColor:
|
||||||
|
"""Simple shortcut to use colors in console"""
|
||||||
|
HEADER = '\033[95m'
|
||||||
|
BLUE = '\033[94m'
|
||||||
|
GREEN = '\033[92m'
|
||||||
|
ORANGE = '\033[93m'
|
||||||
|
RED = '\033[91m'
|
||||||
|
ENDCOLOR = '\033[0m'
|
||||||
|
BOLD = '\033[1m'
|
||||||
|
UNDERLINE = '\033[4m'
|
||||||
|
|
||||||
|
|
||||||
|
class ColoredStrFormatStyle(logging.StrFormatStyle):
|
||||||
|
def __init__(self, fmt, *, defaults=None):
|
||||||
|
self._fmt = fmt or self.default_format
|
||||||
|
self._defaults = defaults
|
||||||
|
self._color = {
|
||||||
|
logging.CRITICAL: ConsoleColor.RED,
|
||||||
|
logging.ERROR: ConsoleColor.RED,
|
||||||
|
logging.WARNING: ConsoleColor.ORANGE,
|
||||||
|
logging.INFO: ConsoleColor.GREEN,
|
||||||
|
logging.DEBUG: ConsoleColor.BLUE,
|
||||||
|
}
|
||||||
|
self._endcolor = ConsoleColor.ENDCOLOR
|
||||||
|
|
||||||
|
def _format(self, record):
|
||||||
|
return self._fmt.format(levelcolor=self._color[record.levelno], endcolor=self._endcolor,
|
||||||
|
**(self._defaults | record.__dict__ if self._defaults else record.__dict__))
|
||||||
|
|
||||||
|
|
||||||
class MemoryHandler(logging.Handler):
|
class MemoryHandler(logging.Handler):
|
||||||
def __init__(self, capacity):
|
def __init__(self, capacity):
|
||||||
"""
|
"""
|
||||||
|
|
@ -24,42 +54,12 @@ class MemoryHandler(logging.Handler):
|
||||||
logging.Handler.close(self)
|
logging.Handler.close(self)
|
||||||
|
|
||||||
|
|
||||||
class ConsoleColor:
|
|
||||||
"""Simple shortcut to use colors in console"""
|
|
||||||
HEADER = '\033[95m'
|
|
||||||
BLUE = '\033[94m'
|
|
||||||
GREEN = '\033[92m'
|
|
||||||
ORANGE = '\033[93m'
|
|
||||||
RED = '\033[91m'
|
|
||||||
ENDCOLOR = '\033[0m'
|
|
||||||
BOLD = '\033[1m'
|
|
||||||
UNDERLINE = '\033[4m'
|
|
||||||
|
|
||||||
|
|
||||||
class ColoredFormatter(logging.Formatter):
|
|
||||||
"""Formatter changing the record during format : adds colors to levelname"""
|
|
||||||
def format(self, record):
|
|
||||||
levelno = record.levelno
|
|
||||||
if levelno == logging.ERROR:
|
|
||||||
levelname_color = ConsoleColor.RED + record.levelname + ConsoleColor.ENDCOLOR
|
|
||||||
elif levelno == logging.WARNING:
|
|
||||||
levelname_color = ConsoleColor.ORANGE + record.levelname + ConsoleColor.ENDCOLOR
|
|
||||||
elif levelno == logging.INFO:
|
|
||||||
levelname_color = ConsoleColor.GREEN + record.levelname + ConsoleColor.ENDCOLOR
|
|
||||||
elif levelno == logging.DEBUG:
|
|
||||||
levelname_color = ConsoleColor.BLUE + record.levelname + ConsoleColor.ENDCOLOR
|
|
||||||
else:
|
|
||||||
levelname_color = record.levelname
|
|
||||||
record.levelname = levelname_color
|
|
||||||
return logging.Formatter.format(self, record)
|
|
||||||
|
|
||||||
|
|
||||||
def create_logger(name: str, level: int, buffer_capacity: int, log_dir: Path | None = None,
|
def create_logger(name: str, level: int, buffer_capacity: int, log_dir: Path | None = None,
|
||||||
stdout=False) -> tuple[logging.Logger, MemoryHandler]:
|
stdout=False) -> tuple[logging.Logger, MemoryHandler]:
|
||||||
logger = logging.getLogger(name)
|
logger = logging.getLogger(name)
|
||||||
logger.setLevel(level)
|
logger.setLevel(level)
|
||||||
|
|
||||||
log_formatter = logging.Formatter('%(asctime)s %(levelname)s : %(message)s')
|
log_formatter = logging.Formatter('{asctime} {levelname} : {message}', style='{')
|
||||||
buffer_handler = MemoryHandler(buffer_capacity)
|
buffer_handler = MemoryHandler(buffer_capacity)
|
||||||
buffer_handler.setFormatter(log_formatter)
|
buffer_handler.setFormatter(log_formatter)
|
||||||
buffer_handler.setLevel(level)
|
buffer_handler.setLevel(level)
|
||||||
|
|
@ -78,7 +78,9 @@ def create_logger(name: str, level: int, buffer_capacity: int, log_dir: Path | N
|
||||||
if stdout:
|
if stdout:
|
||||||
terminal_log_handler = logging.StreamHandler(sys.stdout)
|
terminal_log_handler = logging.StreamHandler(sys.stdout)
|
||||||
terminal_log_handler.setLevel(level)
|
terminal_log_handler.setLevel(level)
|
||||||
colored_log_formatter = ColoredFormatter('%(asctime)s %(levelname)s : %(message)s')
|
fmt = '{asctime} {levelcolor}{levelname}{endcolor} : {message}'
|
||||||
|
colored_log_formatter = logging.Formatter(fmt, style='{')
|
||||||
|
colored_log_formatter._style = ColoredStrFormatStyle(fmt) # noqa: SLF001
|
||||||
terminal_log_handler.setFormatter(colored_log_formatter)
|
terminal_log_handler.setFormatter(colored_log_formatter)
|
||||||
logger.addHandler(terminal_log_handler)
|
logger.addHandler(terminal_log_handler)
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue