Skip to content

配置

命令行配置

$ 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的编码方式。如:gbkutf-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时区来,否则使用系统时区(fmttimestamputc必须为true)。
key(字符串): 日志数组中时间的键名,用timestamp就好

日志杂项(可选)

[pyfsd.logger]
include_extra = true
extract_record = true
通过pyfsd.logger配置日志杂项。
include_extra(布尔值,可选): 是否把日志的extra部分输出。
extract_record(布尔值,可选): 是否把发出日志的线程、进程名输出。