Source code for lback.core.logging_setup

import logging
import logging.config

from .config import Config

[docs] def setup_logging(config: Config): if config.DEBUG: effective_level_str = getattr(config, "LOGGING_LEVEL", "INFO").upper() else: effective_level_str = "WARNING" effective_level = getattr(logging, effective_level_str, logging.INFO) log_config = getattr(config, "LOGGING", None) if log_config: try: if 'handlers' in log_config and 'console' in log_config['handlers']: log_config['handlers']['console']['level'] = logging.getLevelName(effective_level) if 'root' in log_config: log_config['root']['level'] = logging.getLevelName(effective_level) elif '' in log_config.get('loggers', {}): log_config['loggers']['']['level'] = logging.getLevelName(effective_level) logging.config.dictConfig(log_config) actual_effective_level = logging.getLevelName(logging.getLogger().getEffectiveLevel()) logging.info(f"Logging configured using dictConfig. Effective level: {actual_effective_level}") except Exception as e: logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(name)s - %(levelname)s - %(message)s') logging.error(f"Failed to configure logging using dictConfig: {e}. Falling back to basic config.") logging.info(f"Falling back to basic config. Effective level: {logging.getLevelName(logging.getLogger().getEffectiveLevel())}") else: logging.basicConfig( level=effective_level, format='%(asctime)s - %(name)s - %(levelname)s - %(message)s' ) logging.info(f"LOGGING config not found. Logging configured using basicConfig with level: {effective_level_str}")