"""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}} {{process:d}} {{thread:d}} "
                    f"[env={environment}] {{message}}"
                ),
                "style": "{",
            },
            "simple": {
                "format": f"{{levelname}} [env={environment}] {{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"
