| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576 |
- import logging
- from typing import Any, Dict
- from rich_toolkit import RichToolkit, RichToolkitTheme
- from rich_toolkit.styles import TaggedStyle
- from uvicorn.logging import DefaultFormatter
- class CustomFormatter(DefaultFormatter):
- def __init__(self, *args: Any, **kwargs: Any) -> None:
- super().__init__(*args, **kwargs)
- self.toolkit = get_rich_toolkit()
- def formatMessage(self, record: logging.LogRecord) -> str:
- return self.toolkit.print_as_string(record.getMessage(), tag=record.levelname)
- def get_uvicorn_log_config() -> Dict[str, Any]:
- return {
- "version": 1,
- "disable_existing_loggers": False,
- "formatters": {
- "default": {
- "()": CustomFormatter,
- "fmt": "%(levelprefix)s %(message)s",
- "use_colors": None,
- },
- "access": {
- "()": CustomFormatter,
- "fmt": "%(levelprefix)s %(client_addr)s - '%(request_line)s' %(status_code)s",
- },
- },
- "handlers": {
- "default": {
- "formatter": "default",
- "class": "logging.StreamHandler",
- "stream": "ext://sys.stderr",
- },
- "access": {
- "formatter": "access",
- "class": "logging.StreamHandler",
- "stream": "ext://sys.stdout",
- },
- },
- "loggers": {
- "uvicorn": {"handlers": ["default"], "level": "INFO"},
- "uvicorn.error": {"level": "INFO"},
- "uvicorn.access": {
- "handlers": ["access"],
- "level": "INFO",
- "propagate": False,
- },
- },
- }
- logger = logging.getLogger(__name__)
- def get_rich_toolkit() -> RichToolkit:
- theme = RichToolkitTheme(
- style=TaggedStyle(tag_width=11),
- theme={
- "tag.title": "white on #009485",
- "tag": "white on #007166",
- "placeholder": "grey85",
- "text": "white",
- "selected": "#007166",
- "result": "grey85",
- "progress": "on #007166",
- "error": "red",
- "log.info": "black on blue",
- },
- )
- return RichToolkit(theme=theme)
|