import logging
from rich.console import Console
from rich.logging import RichHandler
from rich.progress import Progress
from rich.theme import Theme
from time import sleep
console = Console(theme=Theme({"logging.level.success": "green"}))
"""Use the same console instance"""
class Log:
SUCCESS = 25
logging.addLevelName(SUCCESS, "SUCCESS")
def __init__(self):
FORMAT = "%(message)s"
rich_handler = RichHandler(console=console) #!!!
rich_handler.setLevel(logging.INFO)
rich_handler.setFormatter(logging.Formatter("%(message)s"))
logging.basicConfig(
level=logging.NOTSET,
format=FORMAT,
datefmt="[%X]",
handlers=[rich_handler],
)
self.logger = logging.getLogger(__name__)
self.logger.success = self.success
def success(self, msg):
if self.logger.isEnabledFor(self.SUCCESS):
self.logger._log(self.SUCCESS, msg, ())
log = Log().logger
log.info("Hello, World!")
progress = Progress(console=console) #!!!
total = 100
with progress:
task = progress.add_task("Working", total=total)
for i in range(total):
progress.update(task, advance=1)
if i < 30:
log.success(f"25, {i + 1}")
elif i > 30:
log.warning(i + 1)
elif i >= 30 and i < 50:
log.error(i + 1)
elif i >= 50 and i < 70:
log.debug(i + 1)
elif i >= 70:
log.critical(i + 1)
sleep(0.05)
enter image description here