Skip to content

Commit a06dab8

Browse files
Merge pull request #14538 from akx/log-wut
Fix logging configuration again
2 parents 6ffbff0 + 6fa42e9 commit a06dab8

File tree

1 file changed

+39
-23
lines changed

1 file changed

+39
-23
lines changed

modules/logging_config.py

+39-23
Original file line numberDiff line numberDiff line change
@@ -1,41 +1,57 @@
1-
import os
21
import logging
2+
import os
33

44
try:
5-
from tqdm.auto import tqdm
5+
from tqdm import tqdm
6+
67

78
class TqdmLoggingHandler(logging.Handler):
8-
def __init__(self, level=logging.INFO):
9-
super().__init__(level)
9+
def __init__(self, fallback_handler: logging.Handler):
10+
super().__init__()
11+
self.fallback_handler = fallback_handler
1012

1113
def emit(self, record):
1214
try:
13-
msg = self.format(record)
14-
tqdm.write(msg)
15-
self.flush()
15+
# If there are active tqdm progress bars,
16+
# attempt to not interfere with them.
17+
if tqdm._instances:
18+
tqdm.write(self.format(record))
19+
else:
20+
self.fallback_handler.emit(record)
1621
except Exception:
17-
self.handleError(record)
22+
self.fallback_handler.emit(record)
1823

19-
TQDM_IMPORTED = True
2024
except ImportError:
21-
# tqdm does not exist before first launch
22-
# I will import once the UI finishes seting up the enviroment and reloads.
23-
TQDM_IMPORTED = False
25+
TqdmLoggingHandler = None
26+
2427

2528
def setup_logging(loglevel):
2629
if loglevel is None:
2730
loglevel = os.environ.get("SD_WEBUI_LOG_LEVEL")
2831

29-
loghandlers = []
32+
if not loglevel:
33+
return
34+
35+
if logging.root.handlers:
36+
# Already configured, do not interfere
37+
return
38+
39+
if os.environ.get("SD_WEBUI_RICH_LOG"):
40+
from rich.logging import RichHandler
41+
handler = RichHandler()
42+
else:
43+
handler = logging.StreamHandler()
44+
45+
if TqdmLoggingHandler:
46+
handler = TqdmLoggingHandler(handler)
47+
48+
formatter = logging.Formatter(
49+
'%(asctime)s %(levelname)s [%(name)s] %(message)s',
50+
'%Y-%m-%d %H:%M:%S',
51+
)
3052

31-
if TQDM_IMPORTED:
32-
loghandlers.append(TqdmLoggingHandler())
53+
handler.setFormatter(formatter)
3354

34-
if loglevel:
35-
log_level = getattr(logging, loglevel.upper(), None) or logging.INFO
36-
logging.basicConfig(
37-
level=log_level,
38-
format='%(asctime)s %(levelname)s [%(name)s] %(message)s',
39-
datefmt='%Y-%m-%d %H:%M:%S',
40-
handlers=loghandlers
41-
)
55+
log_level = getattr(logging, loglevel.upper(), None) or logging.INFO
56+
logging.root.setLevel(log_level)
57+
logging.root.addHandler(handler)

0 commit comments

Comments
 (0)