Skip to content

setup_root_logger

daqpytools.logging.logger.setup_root_logger(logger_name, log_level=logging.INFO)

Set up the base logger from which all other loggers inherit. The remaining sh and kafka loggers are set to a higher log level to avoid excessive logging output.

Parameters:

Name Type Description Default
logger_name str

Name of the root logger.

required
log_level int | str

Log level for the root logger.

INFO

Returns:

Type Description
Logger

logging.Logger: Configured root logger instance.

Source code in daqpytools/logging/logger.py
def setup_root_logger(
    logger_name: str, log_level: int | str = logging.INFO
) -> logging.Logger:
    """Set up the base logger from which all other loggers inherit.
    The remaining sh* and kafka* loggers are set to a higher log level to avoid
    excessive logging output.

    Args:
        logger_name (str): Name of the root logger.
        log_level (int | str): Log level for the root logger.

    Returns:
        logging.Logger: Configured root logger instance.
    """
    # Convert level to int if it's a string
    if isinstance(log_level, str):
        log_level = logging_log_level_to_int(log_level)

    # Set up the root logger
    root_logger = logging.getLogger(logger_name)
    root_logger.setLevel(log_level)

    # Validate the root logger has zero handlers
    if len(root_logger.handlers) != 0:
        err_msg = (
            f"Root logger '{logger_name}' already has handlers configured. "
            "Please use a different logger name."
        )
        raise LoggerSetupError(logger_name, err_msg)

    sh_command_level = log_level if log_level > logging.INFO else (log_level + 10)
    sh_command_logger = logging.getLogger(sh.__name__)
    sh_command_logger.setLevel(sh_command_level)
    for handler in sh_command_logger.handlers:
        handler.setLevel(sh_command_level)

    kafka_command_level = log_level if log_level > logging.INFO else (log_level + 10)
    kafka_command_logger = logging.getLogger(kafka.__name__)
    kafka_command_logger.setLevel(kafka_command_level)
    for handler in kafka_command_logger.handlers:
        handler.setLevel(kafka_command_level)

    return root_logger