配置¶
命令行配置¶
$ python -m pyfsd --help
usage: __main__.py [-h] [-c CONFIG_PATH]
options:
-h, --help show this help message and exit
-c CONFIG_PATH, --config-path CONFIG_PATH
Path to the config file.
-c或--config-path: 配置文件的路径。默认为pyfsd.toml。-h或--disable-logger: 打印帮助信息(见上)并退出。 配置文件¶
Note
目录下没有指定的配置文件时会自动生成。
配置缺失会导致PyFSD报错退出。(见疑难杂症)
默认配置如下:
[pyfsd.database]
url = "sqlite:///pyfsd.db"
[pyfsd.client]
port = 6809
motd = """Modify motd in pyfsd.toml."""
motd_encoding = "ascii"
blacklist = []
[pyfsd.metar]
mode = "cron"
cron_time = 3600
fetchers = ["NOAA"]
[pyfsd.logger.logger]
handlers = ["default"]
level = "DEBUG"
propagate = true
[pyfsd.logger.handlers.default]
level = "INFO"
class = "logging.StreamHandler"
formatter = "colored"
数据库¶
[pyfsd.database]
url = "sqlite:///pyfsd.db"
pyfsd.database表来配置数据库。url(字符串): 数据库连接描述URL。具体可在SQLAlchemy文档查看。 对于PyFSD来说,这些就够用了: PostgreSQL: postgresql+asyncpg://user:password@host:port/dbname[?key=value&key=value...]
MySQL: mysql+asyncmy://user:password@host:port/dbname[?key=value&key=value...]
MariaDB: mariadb+asyncmy://user:password@host:port/dbname[?key=value&key=value...]
OracleDB: oracle+oracledb://user:password@host:port[/dbname][?service_name=<service>[&key=value&key=value...]]
MSSQL: mssql+aioodbc://<username>:<password>@<dsnname>[/dbname][?key=value&key=value...]
SQLite: sqlite+aiosqlite:///file_path
user是用户名,password是密码,host是域名或ip(服务在本机的话一般是localhost),file_path是到数据库文件的路径,dbname是数据库名,[abc]表示abc是可选字段。 客户端¶
[pyfsd.client]
port = 6809
motd = """Modify motd in pyfsd.toml."""
motd_encoding = "ascii"
blacklist = []
pyfsd.client表来配置客户端协议。port(整数): 客户端协议的端口。ECHO Pilot、Swift等连飞软件及原版FSD默认使用6809端口。 motd(字符串): 即Message Of The Day,会在客户端成功登录后发送。如需多行直接在引号内换行即可。motd_encoding(字符串): MOTD的编码方式。如:gbk或utf-8。blacklist(字符串列表): IP黑名单。例: blacklist = ["114.514.191.81", "143.22.124.13"] Metar¶
[pyfsd.metar]
mode = "cron"
cron_time = 3600
fetchers = ["NOAA"]
fallback_once = false
pyfsd.metar表来配置Metar。mode(字符串): 下载Metar的模式。可选值: cron: 间隔一段时间下载一次所有机场的Metar,通过cron_time配置。
在此模式下时还需配置:
cron_time(数字,单位为秒): 多久下载一次Metar。
once: 当客户端请求Metar时再下载相关机场的Metar。
fetchers(字符串列表): 设置Metar下载器。可以配置多个,一个无法使用时会使用下一个。
fallback_once(布尔值): 在cron模式获取指定机场无结果后是否尝试用once模式获取。
日志¶
以下是默认日志配置:
[pyfsd.logger.logger]
handlers = ["default"]
level = "DEBUG"
propagate = true
[pyfsd.logger.handlers.default]
level = "INFO"
class = "logging.StreamHandler"
formatter = "colored"
pyfsd.logger表来配置日志,接下来分块讲解。 Note
此节配置需要一定Python logging基础。如果您没有或读不懂,可以直接跳到配置模板一节。
日志处理器¶
[pyfsd.logger.handlers.处理器id]
level = "INFO"
class = "logging.StreamHandler"
formatter = "colored"
pyfsd.logger.handlers.处理器id表来配置一个日志处理器,可以配置多个,但处理器id不能重复。level, class等配置详见Python logging.config文档 字典架构细节的handlers小节。formatter(字符串): 此日志处理器的格式化器。 选项: plain: 无颜色文本日志,适用于日志文件colored: 有颜色文本日志,适用于终端输出json: JSON格式日志,适用于日志分析
日志记录器¶
[pyfsd.logger.logger]
handlers = ["default"]
level = "DEBUG"
propagate = true
pyfsd.logger.logger表配置日志处理器。以下配置详见Python logging.config文档 字典架构细节的loggers小节。简略概括: level(字符串,可选): 全局日志等级。propagate(布尔值,可选): 是否把事件传递给更高级的日志记录器。handlers(字符串列表,可选): 启用的日志处理器的id的列表,必须是在pyfsd.logger.handlers表中配置的。filters(字符串列表,可选): 启用的过滤器id的列表。 日志时间设置(可选)¶
[pyfsd.logger.time]
fmt = "timestamp"
utc = true
key = "timestamp"
pyfsd.logger.time表配置日志的时间设置。fmt(字符串): 格式化后时间的格式,可以是strftime格式字符串,也可以是iso(ISO定义的时间格式),timestamp(时间戳)。utc(布尔值): 是否按UTC时区来,否则使用系统时区(fmt为timestamp时utc必须为true)。key(字符串): 日志数组中时间的键名,用timestamp就好 日志杂项(可选)¶
[pyfsd.logger]
include_extra = true
extract_record = true
pyfsd.logger配置日志杂项。include_extra(布尔值,可选): 是否把日志的extra部分输出。extract_record(布尔值,可选): 是否把发出日志的线程、进程名输出。