Files
YG-Rules/config/__init__.py

56 lines
1.4 KiB
Python

"""应用配置模块。"""
import os
class BaseConfig:
"""基础配置。"""
DEBUG = False
TESTING = False
SECRET_KEY = os.environ.get("SECRET_KEY", "yg-rules-secret-key-change-in-production")
# 日志配置
LOG_LEVEL = os.environ.get("LOG_LEVEL", "INFO")
LOG_DIR = os.path.join(os.path.dirname(os.path.dirname(os.path.abspath(__file__))), "logs")
LOG_MAX_BYTES = 10 * 1024 * 1024 # 10MB
LOG_BACKUP_COUNT = 5
# 请求日志中间件
LOG_REQUEST_BODY = True
LOG_RESPONSE_BODY = True
LOG_BODY_MAX_LENGTH = 2048 # 超过此长度的 body 会被截断
# 规则生成配置
CREATE_SQL = os.environ.get("CREATE_SQL", "false").strip().lower() in {"1", "true", "yes", "on"}
class DevelopmentConfig(BaseConfig):
"""开发环境配置。"""
DEBUG = True
LOG_LEVEL = "DEBUG"
class ProductionConfig(BaseConfig):
"""生产环境配置。"""
LOG_LEVEL = "WARNING"
class TestingConfig(BaseConfig):
"""测试环境配置。"""
TESTING = True
LOG_LEVEL = "DEBUG"
config_map = {
"development": DevelopmentConfig,
"production": ProductionConfig,
"testing": TestingConfig,
"default": DevelopmentConfig,
}
def get_config(env_name: str | None = None) -> type[BaseConfig]:
"""根据环境名获取配置类。"""
env = env_name or os.environ.get("FLASK_ENV", "development")
return config_map.get(env, DevelopmentConfig)