Source code for sequince.log

from __future__ import annotations

import logging
from typing import Any

LOGGER_NAME = "sequince"
DEFAULT_FORMAT = "%(asctime)s sequince [%(levelname)s] %(message)s"


[docs] def configure_logging( *, level: int = logging.INFO, fmt: str = DEFAULT_FORMAT, stream: Any | None = None, force: bool = False, ) -> logging.Logger: """Configure Sequince logging with sensible defaults. Parameters ---------- level: Logging level to apply. Defaults to ``logging.INFO``. fmt: Logging format string supplied to ``basicConfig``. stream: Optional stream object for log output (passed to ``basicConfig``). force: When ``True``, reconfigure logging even if handlers already exist on the Sequince logger. """ logger = logging.getLogger(LOGGER_NAME) if force: for handler in list(logger.handlers): logger.removeHandler(handler) if not logger.handlers: handler = logging.StreamHandler(stream=stream) handler.setLevel(level) handler.setFormatter(logging.Formatter(fmt)) logger.addHandler(handler) logger.setLevel(level) logger.propagate = False return logger