Source code for nbprint.models.logging
import logging
from typing import Dict, List
from IPython.display import HTML
from pydantic import Field
from nbprint import Content
__all__ = ("LoggingBasicConfig", "LoggingConfig")
class LoggingBasicConfig(Content):
"""Set the basic logging configuration, to control which logs may show up in the report."""
log_level: int | str = "CRITICAL"
def __call__(self, **_) -> HTML:
logging.basicConfig(level=self.log_level)
return HTML("")
[docs]
class LoggingConfig(Content):
version: int = 1
disable_existing_loggers: bool = False
formatters: Dict[str, Dict[str, str | Dict[str, str]]] = Field(
default={
"simple": {"format": "[%(asctime)s][%(threadName)s][%(name)s][%(levelname)s]: %(message)s"},
"colorlog": {
"()": "colorlog.ColoredFormatter",
"format": "[%(cyan)s%(asctime)s%(reset)s][%(threadName)s][%(blue)s%(name)s%(reset)s][%(log_color)s%(levelname)s%(reset)s]: %(message)s",
"log_colors": {
"DEBUG": "white",
"INFO": "green",
"WARNING": "yellow",
"ERROR": "red",
"CRITICAL": "red",
},
},
"whenAndWhere": {"format": "[%(asctime)s][%(threadName)s][%(name)s][%(filename)s:%(lineno)d][%(levelname)s]: %(message)s"},
}
)
handlers: Dict[str, Dict[str, str]] = Field(
default={
"console": {
"level": "WARNING",
"class": "ccflow.utils.logging.StreamHandler",
"formatter": "colorlog",
"stream": "ext://sys.stdout",
}
}
)
root: Dict[str, str | List[str]] = Field(default={"handlers": ["console"], "level": "DEBUG"})
def __call__(self, **_) -> HTML:
logging.dictConfig(self.model_dump(exclude=["type_"]))
return HTML("")