Merge d788cbb299b591d8f58e7612c849b645cae5fa97 into 4b5bcd8ac4e221681e2541c2aa2f665a56ef72de

This commit is contained in:
Kallen Ding 2024-12-27 21:07:16 +08:00 committed by GitHub
commit 57d050c5df
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 43 additions and 7 deletions

View File

@ -1,17 +1,24 @@
import io
import sys
import logging
import threading
from collections import deque from collections import deque
from datetime import datetime from datetime import datetime
import io from rich import pretty
import logging from rich.theme import Theme
import sys from rich.console import Console
import threading from rich.logging import RichHandler
logs = None logs = None
stdout_interceptor = None stdout_interceptor = None
stderr_interceptor = None stderr_interceptor = None
LOGFMT = "%(asctime)s %(levelname)s [%(filename)s:%(lineno)s] %(message)s"
formatter = logging.Formatter(LOGFMT)
class LogInterceptor(io.TextIOWrapper): class LogInterceptor(io.TextIOWrapper):
def __init__(self, stream, *args, **kwargs): def __init__(self, stream, *args, **kwargs):
buffer = stream.buffer buffer = stream.buffer
encoding = stream.encoding encoding = stream.encoding
super().__init__(buffer, *args, **kwargs, encoding=encoding, line_buffering=stream.line_buffering) super().__init__(buffer, *args, **kwargs, encoding=encoding, line_buffering=stream.line_buffering)
@ -51,6 +58,7 @@ def on_flush(callback):
if stderr_interceptor is not None: if stderr_interceptor is not None:
stderr_interceptor.on_flush(callback) stderr_interceptor.on_flush(callback)
def setup_logger(log_level: str = 'INFO', capacity: int = 300): def setup_logger(log_level: str = 'INFO', capacity: int = 300):
global logs global logs
if logs: if logs:
@ -68,6 +76,33 @@ 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)
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

View File

@ -18,3 +18,4 @@ psutil
kornia>=0.7.1 kornia>=0.7.1
spandrel spandrel
soundfile soundfile
rich>=13.9.3