38 lines
1.1 KiB
Python
38 lines
1.1 KiB
Python
from typing import Any
|
|
|
|
from loguru import logger
|
|
|
|
from .config import DEBUG
|
|
from .engine import CachingEngine
|
|
from .exceptions import ReadOnlyError, UnsupportedQueryError
|
|
|
|
_DEFAULT_FORMAT = (
|
|
"<green>{time:YYYY-MM-DD HH:mm:ss}</green> | "
|
|
"<level>{level: <8}</level> | "
|
|
"<cyan>{name}</cyan>:<cyan>{line}</cyan> - "
|
|
"<level>{message}</level>"
|
|
)
|
|
|
|
|
|
def add_sink(sink: Any, *, level: str | None = None, **kwargs: Any) -> None:
|
|
"""Route sqlmem log records to *sink*.
|
|
|
|
Accepts any sink supported by loguru (file path, stream, callable, …).
|
|
*level* defaults to ``DEBUG`` when ``SQLMEM_DEBUG=true``, otherwise ``INFO``.
|
|
Extra keyword arguments are forwarded to :func:`loguru.logger.add`.
|
|
|
|
Example::
|
|
|
|
import sys
|
|
from sqlmem import add_sink
|
|
add_sink(sys.stderr)
|
|
add_sink("sqlmem.log", rotation="10 MB")
|
|
"""
|
|
logger.enable("sqlmem")
|
|
kwargs.setdefault("format", _DEFAULT_FORMAT)
|
|
kwargs.setdefault("colorize", True)
|
|
logger.add(sink, level=level or ("DEBUG" if DEBUG else "INFO"), filter="sqlmem", **kwargs)
|
|
|
|
|
|
__all__ = ["CachingEngine", "ReadOnlyError", "UnsupportedQueryError", "add_sink"]
|