Path: blob/master/modules/logging_config.py
3055 views
import logging1import os23try:4from tqdm import tqdm567class TqdmLoggingHandler(logging.Handler):8def __init__(self, fallback_handler: logging.Handler):9super().__init__()10self.fallback_handler = fallback_handler1112def emit(self, record):13try:14# If there are active tqdm progress bars,15# attempt to not interfere with them.16if tqdm._instances:17tqdm.write(self.format(record))18else:19self.fallback_handler.emit(record)20except Exception:21self.fallback_handler.emit(record)2223except ImportError:24TqdmLoggingHandler = None252627def setup_logging(loglevel):28if loglevel is None:29loglevel = os.environ.get("SD_WEBUI_LOG_LEVEL")3031if not loglevel:32return3334if logging.root.handlers:35# Already configured, do not interfere36return3738formatter = logging.Formatter(39'%(asctime)s %(levelname)s [%(name)s] %(message)s',40'%Y-%m-%d %H:%M:%S',41)4243if os.environ.get("SD_WEBUI_RICH_LOG"):44from rich.logging import RichHandler45handler = RichHandler()46else:47handler = logging.StreamHandler()48handler.setFormatter(formatter)4950if TqdmLoggingHandler:51handler = TqdmLoggingHandler(handler)5253handler.setFormatter(formatter)5455log_level = getattr(logging, loglevel.upper(), None) or logging.INFO56logging.root.setLevel(log_level)57logging.root.addHandler(handler)585960