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)