Skip to content

Logger

Bases: Enum

The format class for the logger.

Attributes:

Name Type Description
DEBUG str

Grey

INFO str

Grey

WARN str

Yellow

ERROR str

Bold red

CRITICAL str

Bold red

Source code in pyrays/src/logger/logger.py
class Format(Enum):
    """The format class for the logger.

    Attributes:
        DEBUG (str): Grey
        INFO (str): Grey
        WARN (str): Yellow
        ERROR (str): Bold red
        CRITICAL (str): Bold red

    """

    DEBUG = "[dim][grey]"
    INFO = "[dim][grey]"
    WARN = "[yellow]"
    ERROR = "[bold][red]"
    CRITICAL = ERROR

Bases: object

The logger class for logging messages with rich formatting.

Source code in pyrays/src/logger/logger.py
class Logger(object):
    """The logger class for logging messages with rich formatting."""

    _instance = None
    logger: logging.Logger  # Type annotation for mypy

    def __new__(cls):
        """Create a new instance of the logger class."""
        if cls._instance is None:
            cls._instance = super(Logger, cls).__new__(cls)
            cls._instance.logger = logging.getLogger("rich")
        return cls._instance

    def debug(self, message: str) -> None:
        """Log a debug message with rich formatting.

        Args:
            message (str): The message to log.

        """
        self.logger.debug(Format.DEBUG.value + message + "[/]")

    def info(self, message: str) -> None:
        """Log an info message with rich formatting.

        Args:
            message (str): The message to log.

        """
        self.logger.info(Format.INFO.value + message + "[/]")

    def warn(self, message: str) -> None:
        """Log a warning message with rich formatting.

        Args:
            message (str): The message to log.

        """
        self.logger.warning(Format.WARN.value + message + "[/]")

    def error(self, message: str) -> None:
        """Log an error message with rich formatting.

        Args:
            message (str): The message to log.

        """
        self.logger.error(Format.ERROR.value + message + "[/]")

    def critical(self, message: str) -> None:
        """Log a critical message with rich formatting.

        Args:
            message (str): The message to log.

        """
        self.logger.critical(Format.CRITICAL.value + message + "[/]")

    @staticmethod
    def set_log_level(log_level: str = "") -> None:
        """Set the log level for the logger."""
        if log_level == "debug":
            level = logging.DEBUG
        elif log_level == "info":
            level = logging.INFO
        elif log_level == "warning":
            level = logging.WARNING
        elif log_level == "error":
            level = logging.ERROR
        elif log_level == "critical":
            level = logging.CRITICAL
        elif log_level == "none":
            level = logging.CRITICAL + 1
        else:
            level = logging.WARNING

        logging.basicConfig(
            level=level,
            format="%(message)s",
            handlers=[RichHandler(rich_tracebacks=True, markup=True)],
        )

__new__()

Create a new instance of the logger class.

Source code in pyrays/src/logger/logger.py
def __new__(cls):
    """Create a new instance of the logger class."""
    if cls._instance is None:
        cls._instance = super(Logger, cls).__new__(cls)
        cls._instance.logger = logging.getLogger("rich")
    return cls._instance

critical(message)

Log a critical message with rich formatting.

Parameters:

Name Type Description Default
message str

The message to log.

required
Source code in pyrays/src/logger/logger.py
def critical(self, message: str) -> None:
    """Log a critical message with rich formatting.

    Args:
        message (str): The message to log.

    """
    self.logger.critical(Format.CRITICAL.value + message + "[/]")

debug(message)

Log a debug message with rich formatting.

Parameters:

Name Type Description Default
message str

The message to log.

required
Source code in pyrays/src/logger/logger.py
def debug(self, message: str) -> None:
    """Log a debug message with rich formatting.

    Args:
        message (str): The message to log.

    """
    self.logger.debug(Format.DEBUG.value + message + "[/]")

error(message)

Log an error message with rich formatting.

Parameters:

Name Type Description Default
message str

The message to log.

required
Source code in pyrays/src/logger/logger.py
def error(self, message: str) -> None:
    """Log an error message with rich formatting.

    Args:
        message (str): The message to log.

    """
    self.logger.error(Format.ERROR.value + message + "[/]")

info(message)

Log an info message with rich formatting.

Parameters:

Name Type Description Default
message str

The message to log.

required
Source code in pyrays/src/logger/logger.py
def info(self, message: str) -> None:
    """Log an info message with rich formatting.

    Args:
        message (str): The message to log.

    """
    self.logger.info(Format.INFO.value + message + "[/]")

set_log_level(log_level='') staticmethod

Set the log level for the logger.

Source code in pyrays/src/logger/logger.py
@staticmethod
def set_log_level(log_level: str = "") -> None:
    """Set the log level for the logger."""
    if log_level == "debug":
        level = logging.DEBUG
    elif log_level == "info":
        level = logging.INFO
    elif log_level == "warning":
        level = logging.WARNING
    elif log_level == "error":
        level = logging.ERROR
    elif log_level == "critical":
        level = logging.CRITICAL
    elif log_level == "none":
        level = logging.CRITICAL + 1
    else:
        level = logging.WARNING

    logging.basicConfig(
        level=level,
        format="%(message)s",
        handlers=[RichHandler(rich_tracebacks=True, markup=True)],
    )

warn(message)

Log a warning message with rich formatting.

Parameters:

Name Type Description Default
message str

The message to log.

required
Source code in pyrays/src/logger/logger.py
def warn(self, message: str) -> None:
    """Log a warning message with rich formatting.

    Args:
        message (str): The message to log.

    """
    self.logger.warning(Format.WARN.value + message + "[/]")