79225597

Date: 2024-11-26 06:50:46
Score: 1.5
Natty:
Report link
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

Reasons:
  • Blacklisted phrase (1): enter image description here
  • Probably link only (1):
  • Long answer (-1):
  • Has code block (-0.5):
  • Low reputation (1):
Posted by: vanton