"""Environment-specific logging configuration.""" import os def build_logging_config(level: str, environment: str) -> dict: """Return a Django LOGGING dict for the given level and environment name.""" return { "version": 1, "disable_existing_loggers": False, "formatters": { "verbose": { "format": ( f"{{levelname}} {{asctime}} {{name}} {{filename}}:{{lineno}} " f"{{process:d}} {{thread:d}} [env={environment}] {{message}}" ), "style": "{", }, "simple": { "format": ( f"{{levelname}} [env={environment}] " f"{{filename}}:{{lineno}} {{message}}" ), "style": "{", }, }, "handlers": { "console": { "class": "logging.StreamHandler", "formatter": "verbose" if environment == "dev" else "simple", }, }, "root": { "handlers": ["console"], "level": level, }, "loggers": { "django": { "handlers": ["console"], "level": level, "propagate": False, }, "django.request": { "handlers": ["console"], "level": "ERROR" if environment == "prod" else level, "propagate": False, }, }, } def logging_level_for_env(environment: str) -> str: override = os.environ.get("DJANGO_LOG_LEVEL") if override: return override.upper() if environment == "dev": return "DEBUG" if environment == "beta": return "INFO" return "WARNING"