Source code for aiomisc_log.formatter.rich

import logging
from typing import IO, Any

from aiomisc_log.enum import DateFormat

try:
    from rich import reconfigure
    from rich.logging import RichHandler

    def rich_formatter(
        date_format: str | None = None,
        stream: IO[str] | None = None,
        **kwargs: Any,
    ) -> logging.Handler:
        kwargs.setdefault("rich_tracebacks", False)
        kwargs.setdefault(
            "log_time_format", date_format or DateFormat.rich.value
        )

        if "console" not in kwargs:
            if stream is None:
                reconfigure(stderr=True)
            else:
                reconfigure(file=stream)

        handler = RichHandler(**kwargs)
        formatter = logging.Formatter("%(message)s")
        handler.setFormatter(formatter)
        return handler
except ImportError:

[docs] def rich_formatter( date_format: str | None = None, stream: IO[str] | None = None, **kwargs: Any, ) -> logging.Handler: raise ImportError('You must install "rich" library for use it')