stable-diffusion-webui-forge/modules/logging_config.py
2026-01-21 16:18:51 +08:00

64 lines
1.7 KiB
Python

import logging
import os
from tqdm import tqdm
class TqdmLoggingHandler(logging.Handler):
def __init__(self, fallback_handler: logging.Handler):
super().__init__()
self.fallback_handler = fallback_handler
def emit(self, record: logging.LogRecord):
try:
if tqdm._instances:
tqdm.write(self.format(record))
else:
self.fallback_handler.emit(record)
except Exception:
self.fallback_handler.emit(record)
def setup_logging(loglevel: str = None):
loglevel: str = loglevel or os.environ.get("SD_WEBUI_LOG_LEVEL") or logging.ERROR
if os.environ.get("SD_WEBUI_RICH_LOG"):
from rich.logging import RichHandler
handler = RichHandler(show_path=False)
else:
formatter = logging.Formatter("%(message)s")
handler = logging.StreamHandler()
handler.setFormatter(formatter)
handler = TqdmLoggingHandler(handler)
handler.setFormatter(formatter)
logging.basicConfig(level=loglevel, force=True, handlers=[handler])
if os.environ.get("SD_WEBUI_USE_PRINT"):
return
import builtins
from functools import wraps
logger = logging.getLogger("system")
logger.setLevel(logging.INFO)
logger.addHandler(handler)
logger.propagate = False
_orig = builtins.print
@wraps(_orig)
def log(*args, **kwargs):
if kwargs:
return _orig(*args, **kwargs)
try:
return logger.info(" ".join(str(arg) for arg in args))
except Exception:
return _orig(*args, **kwargs)
builtins.print = log