style: colorize logger format with rich handler

This commit is contained in:
kallen 2024-11-04 14:59:56 +08:00
parent 6c9dbde7de
commit 79617d4007

View File

@ -1,9 +1,15 @@
import logging
from logging.handlers import MemoryHandler
from collections import deque
from rich import pretty
from rich.theme import Theme
from rich.console import Console
from rich.logging import RichHandler
logs = None
formatter = logging.Formatter("%(asctime)s - %(name)s - %(levelname)s - %(message)s")
LOGFMT = "%(asctime)s %(levelname)s [%(filename)s:%(lineno)s] %(message)s"
formatter = logging.Formatter(LOGFMT)
def get_logs():
@ -19,8 +25,7 @@ def setup_logger(log_level: str = 'INFO', capacity: int = 300):
logger = logging.getLogger()
logger.setLevel(log_level)
stream_handler = logging.StreamHandler()
stream_handler.setFormatter(logging.Formatter("%(message)s"))
stream_handler = get_rich_hander(log_level)
logger.addHandler(stream_handler)
# Create a memory handler with a deque as its buffer
@ -29,3 +34,30 @@ def setup_logger(log_level: str = 'INFO', capacity: int = 300):
memory_handler.buffer = logs
memory_handler.setFormatter(formatter)
logger.addHandler(memory_handler)
def get_rich_hander(log_level: str = "INFO") -> RichHandler:
console = Console(
log_time=True,
log_time_format="%Y-%m-%d %H:%M:%S",
theme=Theme({
"log.time": "green",
"inspect.value.border": "black",
"traceback.border": "black",
"traceback.border.syntax_error": "black",
}),
)
pretty.install(console=console)
handler = RichHandler(
console=console,
level=log_level,
markup=False,
show_time=True,
show_level=True,
show_path=True,
rich_tracebacks=True,
enable_link_path=False,
omit_repeated_times=False,
log_time_format="%Y-%m-%d %H:%M:%S",
)
return handler