import logging

# ANSI escape codes for colors
COLOR_CODES = {
    'RESET': '\033[0m',
    'BOLD': '\033[1m',
    'RED': '\033[31m',
    'GREEN': '\033[32m',
    'YELLOW': '\033[33m',
    'BLUE': '\033[34m',
}

# Define colors for each log level
LOG_COLORS = {
    'DEBUG': COLOR_CODES['BLUE'],
    'INFO': COLOR_CODES['GREEN'],
    'WARNING': COLOR_CODES['YELLOW'],
    'ERROR': COLOR_CODES['RED'],
    'CRITICAL': COLOR_CODES['BOLD'] + COLOR_CODES['RED'],
}


# Create a formatter with colors
class ColoredFormatter(logging.Formatter):
    def format(self, record):
        log_level = record.levelname
        record.levelname = f"{LOG_COLORS.get(log_level, '')}{record.levelname}{COLOR_CODES['RESET']}"
        return super().format(record)


# Set up the root logger
root_logger = logging.getLogger(__name__)
root_logger.setLevel(logging.INFO)

# Create a console handler and set the formatter
ch = logging.StreamHandler()
ch.setFormatter(ColoredFormatter('%(levelname)s: %(message)s'))

# Add the console handler to the root logger
root_logger.addHandler(ch)

# Define log level functions
debug = root_logger.debug
info = root_logger.info
warning = root_logger.warning
error = root_logger.error
critical = root_logger.critical