56 lines
1.4 KiB
Python
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)
|