Source code for uval.utils.log

# -*- coding: utf-8 -*-
"""This utils module currently only provides logging functionality.
Once this grows to much, we will need to split it.
"""

import logging

from rich.logging import RichHandler

FORMAT = "%(message)s"
logging.basicConfig(level=logging.INFO, format=FORMAT, datefmt="[%X]", handlers=[RichHandler(rich_tracebacks=True)])
logger = logging.getLogger("uval")


[docs]class RootLogger: """ All the child logger messages will propagate through this root logger """ def __init__(self, logging_level=logging.DEBUG): """ The root logger will be configured but should never be used directly for logging Child loggers will propagate their messages up to the root logger Args: logging_level: The verbosity level of logger """ self.root_logger = logging.getLogger() self.root_logger.setLevel(logging_level) # The logging formats are currently not configurable self.stream_formatter = logging.Formatter(fmt="%(asctime)s %(name)s [%(levelname)s]: %(message)s") self.popup_formatter = logging.Formatter(fmt="%(name)s [%(levelname)s]: %(message)s") # Now set up our initial logging handlers self.set_up_handlers()
[docs] def set_up_handlers(self): """ Sets up Stream Handlers """ stream_handler = logging.StreamHandler() stream_handler.setFormatter(self.stream_formatter) self.root_logger.handlers = [ stream_handler, ]