反馈问题时如何提交日志
开启服务端与 TSF 端的 debug 日志、让它生效、复现问题、找到并打包日志文件,以及提交前必须知道的隐私注意事项
绝大多数输入问题,只看描述判断不出原因——一份 debug 级别的日志能省掉十轮来回。本页是完整流程:开日志 → 生效 → 复现 → 收集 → 发送 → 调回去。
先读这一条:debug 日志会记录你输入了什么
debug / trace 级别的日志包含按键序列、候选内容、当前焦点程序名等信息。你在复现期间打的字,基本都会落在文件里。
因此:只在排查时临时开启,复现完立即调回;发送时优先用私聊(论坛私信、QQ 私聊),不要贴到公开帖子、公开 issue 或群聊里。详见发送日志时的隐私注意。
升级后的异常先重启电脑
升级安装后出现不生效、候选窗不出、输入错乱,多半是新旧 DLL 混用。先重启电脑再看问题还在不在,在的话再来开日志。见常见问题。
第一步:开启日志
打开设置工具 → 高级 → 页面最下方的 日志设置。这里有三个独立的级别开关:
| 项 | 管谁 | 出厂 | 反馈时建议 |
|---|---|---|---|
| 输入法服务日志级别 | 后台主服务(候选、词库、排序、配置都在这里) | info | 调到 debug |
| TSF 端日志级别 | 加载进各个程序里的输入法 DLL(吃键、组合区、候选窗定位、宿主兼容) | 关闭 | 调到 debug |
| 设置程序日志级别 | 设置工具自己 | info | 只有设置界面本身出问题时才需要提级 |
反馈输入相关的问题时,前两项都要开,且至少 debug:
info只记大事,看不到按键怎么走、候选怎么来的,基本定位不了问题trace更详细,但量大、会拖慢输入;一般先给debug,被要求时再上trace
为什么是三个开关,不能一次改完
三个模块的日志级别必须在各自启动那一刻就读得到:服务读 config.toml,设置程序读自己的配置,而 TSF DLL 在被宿主进程加载的一瞬间(DllMain)就要把日志支起来——那时它跟服务的通道还没建立,等推送过来,最该看的启动那一段已经过去了。所以它单独读日志目录下的 tsf_log_config 文件。
三个模块的落点不同,但日志都写在同一个 logs 目录下,所以"打开日志目录"只有一个入口。
选到 debug / trace 后,这一屏顶部会多出一条橙色隐私提示——那是这页唯一需要停下来看的一句。
第二步:让它生效(必须重启)
日志级别改完不会立刻生效,各自的生效条件也不一样:
| 改了哪项 | 要重启什么 |
|---|---|
| 输入法服务日志级别 | 重启输入法服务:功能主菜单 → 重启服务("重载配置"不够,日志通道要重建) |
| TSF 端日志级别 | 重启出问题的那个程序(浏览器、Word、QQ……)。DLL 常驻在宿主进程里,不重启它就还在用旧级别 |
| 设置程序日志级别 | 关掉设置工具重新打开 |
TSF 端最容易漏
「我开了日志但 tsf_log 目录是空的」几乎都是这一条:改完级别没重启目标程序。如果那个程序有后台常驻(浏览器的后台进程、聊天软件的托盘),要彻底退出再启动,不只是关窗口。
第三步:复现问题
重启到位后,再去把问题复现一遍,并记下:
- 在哪个程序里(精确到程序名,浏览器还要说是哪个页面/输入框)
- 用的是哪个方案(拼音 / 五笔 / 混输……)
- 打了哪些键、期望出什么、实际出了什么
- 大致的时间点(有助于在日志里定位那一段)
复现期间尽量不要打无关的内容——既缩短日志,也少泄露隐私。
顺手可以再补两样取证材料:
- 窗口截图:功能主菜单 → 高级 → 「截图所有窗口到文件」,把候选窗、工具栏等逐个存成 PNG(也有热键
Ctrl+Shift+F11,见快捷键) - 输入诊断 HUD:菜单 → 高级 → 勾选「输入诊断 HUD」,实时显示当前焦点程序的输入状态与禁用原因。「这个程序里输入法完全没反应」类问题,HUD 的一张截图往往比日志还直接。见功能主菜单 · 输入诊断 HUD
第四步:找到日志文件
最省事的入口:设置工具 高级 → 日志设置 → 日志目录 的「打开」按钮,或功能主菜单 → 高级 → 「打开日志目录」。
目录位置:
| 版本 | 日志目录 |
|---|---|
| 安装版(Windows) | %LOCALAPPDATA%\WindInput\logs\ |
| 便携版 | <解压目录>\userdata\logs\ |
| macOS | ~/Library/Application Support/WindInput/logs/ |
里面的结构:
logs\
├── wind_input.1.log ← 服务日志,.1 恒为最新(正在写的那份)
├── wind_input.2.log ← 更旧
├── startup_stage.log ← 服务启动轨迹
├── wind_setting.1.log ← 设置程序日志
└── tsf_log\ ← TSF 端日志(每个宿主进程一份)
├── wind_tsf.chrome.12345.log
├── wind_tsf.WINWORD.6789.log
└── wind_tsf.explorer.4321.log两个容易搞错的点:
- 服务日志:数字越小越新,
.1就是当前这份 0.121 新增。不要只发编号最大的那个(那是最旧的),见日志文件的序号 - TSF 日志:文件名是
wind_tsf.<程序名>.<进程号>.log,按"用过的宿主 × 进程"生成,可能有几十个。要发的是出问题那个程序对应的那一份;同一程序有多个进程号时,按修改时间最新的挑,拿不准就把整个tsf_log目录一起打包
该提交哪些
| 必交 | 说明 |
|---|---|
wind_input.1.log | 服务日志(问题跨了多次重启时,把 .2 .3 也带上) |
tsf_log\wind_tsf.<出问题的程序>.*.log | TSF 端日志;不确定就整个 tsf_log 目录 |
| 问题描述 | 第三步记下的那四条:程序、方案、按键、现象 |
| 按需 | 说明 |
|---|---|
startup_stage.log | 服务起不来、启动慢时 |
wind_setting.1.log | 设置界面本身出问题时 |
| 窗口截图 / HUD 截图 | 显示位置、候选窗外观、"没反应"类问题 |
| 版本号 | 设置工具「关于」页,或托盘菜单里可见 |
最简单的做法:把整个 logs 目录打包成一个 zip 发出来,缺文件的风险最小——但打包前请先读下一节。
macOS 上没有 TSF 端
macOS 的输入法层是 IMKit,日志随主程序走,没有单独的 TSF 开关与 tsf_log 目录。那边只需要开「输入法服务日志级别」。见 macOS 版。
第五步:发送日志(隐私)
debug 及以上级别的日志里有你输入的内容。 除了按键与候选,还可能包含当前程序名、窗口标题这类上下文。日志文件是纯文本,谁拿到都能直接看。
因此:
- 优先私聊发送 —— 社区论坛的私信(点对方头像 → 「发私信」),或 QQ 群里私聊,不要在公开帖子、群聊、公开 issue 里直接甩文件
- 发之前自己扫一眼 —— 用记事本打开日志搜一下账号、密码、聊天内容之类的关键词;复现时如果不慎打了敏感内容,删掉那几行再发,或干脆清空日志重新复现一次
- 公开渠道只贴片段 —— 非要在公开处讨论时,只粘贴与问题直接相关的那几行,并手工抹掉其中的文本内容
- 发完记得删 —— 对方拿到后,本机的日志也可以清掉
私聊挡住的是对话,不是文件
论坛私信只保证别人看不到这段对话。附件本身仍然存放在论坛的公开文件路径下,拿到那条链接的人(哪怕没登录)就能下载。文件名带一长串时间戳和随机数,别人猜不出来,但那是「猜不到」,不是「进不去」。
所以上面第 2 条不能省:私聊不等于加密,真正敏感的内容要在发送前就删掉,而不是指望私聊这层。QQ 私聊同理。
密码不会被记进日志,但别依赖这一点
输入法默认开启「密码框强制英文」,检测到密码输入框时会抑制中文输入。但这依赖对宿主程序的识别,并非所有程序都能识别成功。复现问题期间请避开登录、支付这类操作。
第六步:调回去
排查完(或对方说日志够了),回设置工具 高级 → 日志设置:
- 输入法服务日志级别 → 调回
info - TSF 端日志级别 → 调回 关闭
- 同样需要重启服务 / 重启相关程序才真正停下来
debug / trace 日志量大、写盘频繁,长期开着会拖慢输入,也在持续积累含输入内容的文件。排查完一定要调回去。
需要彻底不留日志时,服务端可选 关闭 档:那是真的一个文件都不建(不是建了但为空),连 startup_stage.log 也停写。
附:手工开启 TSF 日志
设置工具打不开、或者要在设置工具够不着的场景(如 AppContainer 沙箱里的应用商店程序)里开日志时,可以直接编辑日志目录下的 tsf_log_config 文件(没有就新建,无扩展名):
mode=file
level=debug| 键 | 取值 | 说明 |
|---|---|---|
mode | none / file / debugstring / all | 记不记、记到哪。none = 不记;file = 写进 tsf_log\;debugstring 需配合 DebugView.exe 查看 |
level | error / warn / info / debug / trace | 详细程度。mode=none 时这行不起作用 |
dump_hotkey | 0 / 1 | Ctrl+Shift+F12 导出环形缓冲日志,出厂关闭 0.121 新增。开着会让这个键始终到不了宿主程序(它在 VS / JetBrains 里是有主的快捷键),排查完记得关 |
改完同样要重启目标程序才生效。设置工具里的「TSF 端日志级别」改的就是这个文件,两边等价;设置工具写回时逐行保留你手写的其他内容,不会把 dump_hotkey 这类开关抹掉。
日志文件本身支持外部改动:删掉文件或整个 tsf_log 目录,一秒内自动重建,不必重启宿主;想从干净状态重新复现时,直接清空文件即可。
相关
- 高级设置 · 日志设置 —— 设置页上这三项的说明
- 配置文件 · 日志调试 ——
[debug]域的配置键与日志滚动 - 功能主菜单 · 高级子菜单 —— 截图、诊断 HUD、打开日志目录
- 常见问题 —— 反馈之前先看看是不是已知情况