配置文件
配置文件
框架提供灵活的配置管理系统,支持多种格式的配置文件,满足不同项目的需求。
核心特性
- 多格式支持:支持 YAML、JSON、INI 等主流配置格式
- 灵活配置:支持日志、服务器、数据库等各类配置项
- 简单易用:一行代码即可加载配置文件
- 动态访问:通过对象属性方式访问配置项
- 安全可靠:自动验证配置文件格式和必需项
功能概览
功能特性 | 描述 | 优势 |
---|---|---|
多格式支持 | YAML、JSON、INI 格式 | 适应不同团队的配置习惯 |
结构化配置 | 支持嵌套配置结构 | 清晰的配置组织方式 |
必需项验证 | 自动检查必需配置项 | 避免配置遗漏导致的错误 |
动态访问 | 点号语法访问配置 | 简洁的配置读取方式 |
类型安全 | 保持配置项原始类型 | 减少类型转换错误 |
快速开始
基础配置示例
日志配置是必需项,以下示例使用 YAML 格式进行说明:
# 日志配置(必填)
logger:
sink: app.log # 日志输出位置
level: DEBUG # 日志级别,记录 DEBUG 及以上级别的日志
diagnose: false # 是否输出详细调试信息(例如局部变量)
enqueue: true # 是否异步写入日志,以提升性能
rotation: "500 MB" # 单个日志文件的最大体积,超过后自动切割
retention: "1 months" # 日志保留期限,超期日志将自动清理
compression: tar # 日志压缩格式(如 .tar),用于节省存储空间
format: "<green>{time:YYYYMMDD HH:mm:ss}</green> | \
{process.name} | {thread.name} | \
<cyan>{module}</cyan>.<cyan>{function}</cyan>:<cyan>{line}</cyan> | \
<level>{level}</level>: <level>{message}</level>" # 日志格式模板
支持的配置文件格式
框架支持多种主流配置文件格式,您可以根据项目需求和团队习惯选择合适的格式:
YAML 格式 (推荐)
文件扩展名:.yaml
/ .yml
特点:
- 人类可读性强
- 支持注释
- 层次结构清晰
- 支持复杂数据类型
# config.yaml
logger:
sink: app.log
level: DEBUG
rotation: "500 MB"
server:
host: 127.0.0.1
port: 8080
debug: true
database:
host: localhost
port: 5432
name: myapp
user: admin
password: secret123
JSON 格式
文件扩展名:.json
特点:
- 标准化格式
- 广泛支持
- 严格的语法规则
{
"logger": {
"sink": "app.log",
"level": "DEBUG",
"rotation": "500 MB"
},
"server": {
"host": "127.0.0.1",
"port": 8080,
"debug": true
},
"database": {
"host": "localhost",
"port": 5432,
"name": "myapp",
"user": "admin",
"password": "secret123"
}
}
INI 格式
文件扩展名:.ini
特点:
- 简单易懂
- 传统配置格式
- 适合简单配置
# config.ini
[logger]
sink = app.log
level = DEBUG
rotation = 500 MB
[server]
host = 127.0.0.1
port = 8080
debug = true
[database]
host = localhost
port = 5432
name = myapp
user = admin
password = secret123
完整应用示例
import asyncio
from simplejrpc.app import ServerApplication
from simplejrpc.response import jsonify
# 创建应用实例,指定 socket 文件路径
app = ServerApplication(socket_path="app.socket",config_path="config.yaml")
@app.route(name="echo")
async def echo(message: str,lang: str):
"""带验证的回声接口"""
return jsonify(data=f"收到消息: {message}", msg="消息已处理")
@app.route(name="hello")
async def hello():
"""简单的问候接口"""
print(app.config.logger) # 访问日志配置,这个必须要在服务实例化之后去进行调用
return jsonify(data="Hello, GMSSH!", msg="请求成功")
if __name__ == "__main__":
asyncio.run(app.run())
配置集成
配置文件自动加载
ServerApplication
支持自动加载配置文件,提供灵活的配置路径指定方式:
from simplejrpc.app import ServerApplication
# 方式1:显式指定配置文件路径
app = ServerApplication(
socket_path="app.socket",
config_path="config.yaml" # 指定配置文件路径
)
# 方式2:不指定配置路径,框架自动查找
app = ServerApplication(
socket_path="app.socket"
# 框架会自动在项目根目录查找 config.yaml 文件
)
注意事项
- 确保配置文件路径正确且文件存在
- 配置文件必须包含必需的
logger
配置项 - 配置文件格式必须正确,避免语法错误
- 建议在开发和生产环境使用不同的配置文件