Source code for sphinx_terminhtml.logger

import logging
import sys
from enum import Enum

from pydantic import BaseSettings, validator
from rich.logging import RichHandler


[docs]class LogLevel(str, Enum): INFO = "INFO" DEBUG = "DEBUG"
[docs]class LoggingConfig(BaseSettings): level: LogLevel = LogLevel.INFO
[docs] class Config: env_prefix = "SPHINX_TERMINHTML_LOG_"
[docs] @validator("level", pre=True) def cast_log_level(cls, v): if isinstance(v, LogLevel): return v level = str(v).casefold().strip() if level == "info": return LogLevel.INFO elif level == "debug": return LogLevel.DEBUG raise ValueError(f"invalid log level {level}")
LOGGING_CONFIG = LoggingConfig() log = logging.getLogger("capiq-customer-supplier") log.setLevel(LOGGING_CONFIG.level.value) formatter = logging.Formatter("%(message)s", datefmt="[%X]") ch = logging.StreamHandler(stream=sys.stdout) ch.setLevel(logging.DEBUG) ch.setFormatter(formatter) log.handlers = [] log.addHandler(ch) log.addHandler(RichHandler(rich_tracebacks=True)) if __name__ == "__main__": log.info("info level") log.debug("debug level") try: raise ValueError("exception") except ValueError as e: log.exception(e)