Spaces:
Paused
Paused
""" | |
Centralized Logging Configuration for Yuga Planner | |
This module provides a unified logging configuration that: | |
1. Respects the YUGA_DEBUG environment variable for debug logging | |
2. Uses consistent formatting across the entire codebase | |
3. Eliminates the need for individual logging.basicConfig() calls | |
Usage: | |
from utils.logging_config import setup_logging, get_logger | |
# Initialize logging (typically done once per module) | |
setup_logging() | |
logger = get_logger(__name__) | |
# Use logging methods | |
logger.debug("Debug message - only shown when YUGA_DEBUG=true") | |
logger.info("Info message - always shown") | |
logger.warning("Warning message") | |
logger.error("Error message") | |
Environment Variables: | |
YUGA_DEBUG: Set to "true" to enable debug logging | |
Migration from old logging: | |
Replace: | |
import logging | |
logging.basicConfig(level=logging.INFO) | |
logger = logging.getLogger(__name__) | |
With: | |
from utils.logging_config import setup_logging, get_logger | |
setup_logging() | |
logger = get_logger(__name__) | |
""" | |
import logging | |
import os | |
from typing import Optional | |
def setup_logging(level: Optional[str] = None) -> None: | |
""" | |
Set up centralized logging configuration for the application. | |
Args: | |
level: Override the logging level. If None, uses YUGA_DEBUG environment variable. | |
""" | |
# Determine logging level | |
if level is not None: | |
log_level = getattr(logging, level.upper(), logging.INFO) | |
else: | |
debug_enabled = os.getenv("YUGA_DEBUG", "false").lower() == "true" | |
log_level = logging.DEBUG if debug_enabled else logging.INFO | |
# Configure logging | |
logging.basicConfig( | |
level=log_level, | |
format="%(asctime)s - %(name)s - %(levelname)s - %(message)s", | |
datefmt="%Y-%m-%d %H:%M:%S", | |
) | |
# Log the configuration | |
logger = logging.getLogger(__name__) | |
logger.debug("Debug logging enabled via YUGA_DEBUG environment variable") | |
def get_logger(name: str) -> logging.Logger: | |
""" | |
Get a logger instance with the specified name. | |
Args: | |
name: Name for the logger, typically __name__ | |
Returns: | |
Configured logger instance | |
""" | |
return logging.getLogger(name) | |
def is_debug_enabled() -> bool: | |
"""Check if debug logging is enabled via environment variable.""" | |
return os.getenv("YUGA_DEBUG", "false").lower() == "true" | |