MedAI_VLM / src /logger.py
Jesteban247's picture
Upload 88 files
d5f2660 verified
"""Logging configuration for MedGemma AI"""
import logging
import os
import sys
class ColoredFormatter(logging.Formatter):
"""Custom formatter with colors for different log levels"""
# ANSI color codes
COLORS = {
'DEBUG': '\033[36m', # Cyan
'INFO': '\033[32m', # Green
'WARNING': '\033[33m', # Yellow
'ERROR': '\033[31m', # Red
'CRITICAL': '\033[35m', # Magenta
}
RESET = '\033[0m'
def format(self, record):
# Add color to level name and pad for alignment
if record.levelname in self.COLORS:
# Pad level name to 8 characters for alignment (WARNING is longest at 7)
padded_level = record.levelname.ljust(8)
record.levelname = f"{self.COLORS[record.levelname]}{padded_level}{self.RESET}"
return super().format(record)
def setup_logger(name: str) -> logging.Logger:
"""Setup logger with consistent formatting and colors"""
# Allow DEBUG mode via environment variable
log_level = logging.DEBUG if os.getenv("DEBUG", "").lower() in ("1", "true", "yes") else logging.INFO
# Create logger
logger = logging.getLogger(name)
logger.setLevel(log_level)
# Avoid duplicate handlers
if logger.handlers:
return logger
# Console handler with colors
console_handler = logging.StreamHandler(sys.stdout)
console_handler.setLevel(log_level)
# Use colored formatter for console
formatter = ColoredFormatter(
fmt='%(asctime)s | %(levelname)s | %(name)s | %(message)s',
datefmt='%H:%M:%S'
)
console_handler.setFormatter(formatter)
logger.addHandler(console_handler)
return logger