|
import os
|
|
import logging
|
|
import time
|
|
import sys
|
|
|
|
from rich.theme import Theme
|
|
from rich.logging import RichHandler
|
|
from rich.console import Console
|
|
from rich.pretty import install as pretty_install
|
|
from rich.traceback import install as traceback_install
|
|
|
|
log = None
|
|
|
|
|
|
def setup_logging(clean=False, debug=False):
|
|
global log
|
|
|
|
if log is not None:
|
|
return log
|
|
|
|
try:
|
|
if clean and os.path.isfile("setup.log"):
|
|
os.remove("setup.log")
|
|
time.sleep(0.1)
|
|
except:
|
|
pass
|
|
|
|
if sys.version_info >= (3, 9):
|
|
logging.basicConfig(
|
|
level=logging.DEBUG,
|
|
format="%(asctime)s | %(levelname)s | %(pathname)s | %(message)s",
|
|
filename="setup.log",
|
|
filemode="a",
|
|
encoding="utf-8",
|
|
force=True,
|
|
)
|
|
else:
|
|
logging.basicConfig(
|
|
level=logging.DEBUG,
|
|
format="%(asctime)s | %(levelname)s | %(pathname)s | %(message)s",
|
|
filename="setup.log",
|
|
filemode="a",
|
|
force=True,
|
|
)
|
|
|
|
console = Console(
|
|
log_time=True,
|
|
log_time_format="%H:%M:%S-%f",
|
|
theme=Theme(
|
|
{
|
|
"traceback.border": "black",
|
|
"traceback.border.syntax_error": "black",
|
|
"inspect.value.border": "black",
|
|
}
|
|
),
|
|
)
|
|
pretty_install(console=console)
|
|
traceback_install(
|
|
console=console,
|
|
extra_lines=1,
|
|
width=console.width,
|
|
word_wrap=False,
|
|
indent_guides=False,
|
|
suppress=[],
|
|
)
|
|
rh = RichHandler(
|
|
show_time=True,
|
|
omit_repeated_times=False,
|
|
show_level=True,
|
|
show_path=False,
|
|
markup=False,
|
|
rich_tracebacks=True,
|
|
log_time_format="%H:%M:%S-%f",
|
|
level=logging.DEBUG if debug else logging.INFO,
|
|
console=console,
|
|
)
|
|
rh.set_name(logging.DEBUG if debug else logging.INFO)
|
|
log = logging.getLogger("sd")
|
|
log.addHandler(rh)
|
|
|
|
return log
|
|
|