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 import logging
from logging.handlers import MemoryHandler from logging.handlers import MemoryHandler
from collections import deque 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 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(): def get_logs():
@ -19,8 +25,7 @@ def setup_logger(log_level: str = 'INFO', capacity: int = 300):
logger = logging.getLogger() logger = logging.getLogger()
logger.setLevel(log_level) logger.setLevel(log_level)
stream_handler = logging.StreamHandler() stream_handler = get_rich_hander(log_level)
stream_handler.setFormatter(logging.Formatter("%(message)s"))
logger.addHandler(stream_handler) logger.addHandler(stream_handler)
# Create a memory handler with a deque as its buffer # 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.buffer = logs
memory_handler.setFormatter(formatter) memory_handler.setFormatter(formatter)
logger.addHandler(memory_handler) 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