|
import logging |
|
import os |
|
|
|
try: |
|
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): |
|
try: |
|
|
|
|
|
if tqdm._instances: |
|
tqdm.write(self.format(record)) |
|
else: |
|
self.fallback_handler.emit(record) |
|
except Exception: |
|
self.fallback_handler.emit(record) |
|
|
|
except ImportError: |
|
TqdmLoggingHandler = None |
|
|
|
|
|
def setup_logging(loglevel): |
|
if loglevel is None: |
|
loglevel = os.environ.get("SD_WEBUI_LOG_LEVEL") |
|
|
|
if not loglevel: |
|
return |
|
|
|
if logging.root.handlers: |
|
|
|
return |
|
|
|
if os.environ.get("SD_WEBUI_RICH_LOG"): |
|
from rich.logging import RichHandler |
|
handler = RichHandler() |
|
else: |
|
handler = logging.StreamHandler() |
|
|
|
if TqdmLoggingHandler: |
|
handler = TqdmLoggingHandler(handler) |
|
|
|
formatter = logging.Formatter( |
|
'%(asctime)s %(levelname)s [%(name)s] %(message)s', |
|
'%Y-%m-%d %H:%M:%S', |
|
) |
|
|
|
handler.setFormatter(formatter) |
|
|
|
log_level = getattr(logging, loglevel.upper(), None) or logging.INFO |
|
logging.root.setLevel(log_level) |
|
logging.root.addHandler(handler) |
|
|