|  | """ | 
					
						
						|  | Common logging module for axolotl | 
					
						
						|  | """ | 
					
						
						|  |  | 
					
						
						|  | import os | 
					
						
						|  | import sys | 
					
						
						|  | from logging import Formatter | 
					
						
						|  | from logging.config import dictConfig | 
					
						
						|  | from typing import Any, Dict | 
					
						
						|  |  | 
					
						
						|  | from colorama import Fore, Style, init | 
					
						
						|  |  | 
					
						
						|  |  | 
					
						
						|  | class ColorfulFormatter(Formatter): | 
					
						
						|  | """ | 
					
						
						|  | Formatter to add coloring to log messages by log type | 
					
						
						|  | """ | 
					
						
						|  |  | 
					
						
						|  | COLORS = { | 
					
						
						|  | "WARNING": Fore.YELLOW, | 
					
						
						|  | "ERROR": Fore.RED, | 
					
						
						|  | "CRITICAL": Fore.RED + Style.BRIGHT, | 
					
						
						|  | } | 
					
						
						|  |  | 
					
						
						|  | def format(self, record): | 
					
						
						|  | log_message = super().format(record) | 
					
						
						|  | return self.COLORS.get(record.levelname, "") + log_message + Fore.RESET | 
					
						
						|  |  | 
					
						
						|  |  | 
					
						
						|  | DEFAULT_LOGGING_CONFIG: Dict[str, Any] = { | 
					
						
						|  | "version": 1, | 
					
						
						|  | "formatters": { | 
					
						
						|  | "simple": { | 
					
						
						|  | "format": "[%(asctime)s] [%(levelname)s] [%(name)s.%(funcName)s:%(lineno)d] [PID:%(process)d] %(message)s", | 
					
						
						|  | }, | 
					
						
						|  | "colorful": { | 
					
						
						|  | "()": ColorfulFormatter, | 
					
						
						|  | "format": "[%(asctime)s] [%(levelname)s] [%(name)s.%(funcName)s:%(lineno)d] [PID:%(process)d] %(message)s", | 
					
						
						|  | }, | 
					
						
						|  | }, | 
					
						
						|  | "filters": {}, | 
					
						
						|  | "handlers": { | 
					
						
						|  | "console": { | 
					
						
						|  | "class": "logging.StreamHandler", | 
					
						
						|  | "formatter": "simple", | 
					
						
						|  | "filters": [], | 
					
						
						|  | "stream": sys.stdout, | 
					
						
						|  | }, | 
					
						
						|  | "color_console": { | 
					
						
						|  | "class": "logging.StreamHandler", | 
					
						
						|  | "formatter": "colorful", | 
					
						
						|  | "filters": [], | 
					
						
						|  | "stream": sys.stdout, | 
					
						
						|  | }, | 
					
						
						|  | }, | 
					
						
						|  | "root": {"handlers": ["console"], "level": os.getenv("LOG_LEVEL", "INFO")}, | 
					
						
						|  | "loggers": { | 
					
						
						|  | "axolotl": { | 
					
						
						|  | "handlers": ["color_console"], | 
					
						
						|  | "level": "DEBUG", | 
					
						
						|  | "propagate": False, | 
					
						
						|  | }, | 
					
						
						|  | }, | 
					
						
						|  | } | 
					
						
						|  |  | 
					
						
						|  |  | 
					
						
						|  | def configure_logging(): | 
					
						
						|  | """Configure with default logging""" | 
					
						
						|  | init() | 
					
						
						|  | dictConfig(DEFAULT_LOGGING_CONFIG) | 
					
						
						|  |  |