Spaces:
Sleeping
Sleeping
| # app/logger.py | |
| """ | |
| Structured, colorized logger used across the app. | |
| - Uses colorlog to add color to log levels in console. | |
| - Central logger configuration prevents duplicate handlers. | |
| """ | |
| import logging | |
| import sys | |
| from typing import Optional | |
| import colorlog | |
| from .config import settings | |
| def get_logger(name: Optional[str] = None) -> logging.Logger: | |
| logger = logging.getLogger(name) | |
| if logger.handlers: | |
| # already configured | |
| return logger | |
| # Get level from settings or default to INFO | |
| log_level_str = settings.LOG_LEVEL.upper() | |
| level = getattr(logging, log_level_str, logging.INFO) | |
| # Console Handler with Color | |
| handler = colorlog.StreamHandler(stream=sys.stdout) | |
| handler.setLevel(level) | |
| # Enhanced Formatter with better spacing and colors | |
| formatter = colorlog.ColoredFormatter( | |
| "%(log_color)s%(levelname)-8s%(reset)s | %(log_color)s%(asctime)s%(reset)s | %(cyan)s%(name)s%(reset)s | %(message)s", | |
| datefmt="%H:%M:%S", | |
| log_colors={ | |
| "DEBUG": "blue", | |
| "INFO": "green", | |
| "WARNING": "yellow", | |
| "ERROR": "bold_red", | |
| "CRITICAL": "bold_red,bg_white", | |
| }, | |
| secondary_log_colors={ | |
| "message": { | |
| "ERROR": "red", | |
| "CRITICAL": "red", | |
| } | |
| }, | |
| style="%" | |
| ) | |
| handler.setFormatter(formatter) | |
| logger.setLevel(level) | |
| logger.addHandler(handler) | |
| logger.propagate = False | |
| return logger | |
| # Global app logger | |
| logger = get_logger("bge-server") | |