跳转到内容

导出日志

导出日志是把 TWS / IB Gateway 本地保存的日志解密并保存成可阅读文件。它和“上传日志”不同:上传是发给 IBKR 支持,导出是保存到用户电脑,方便你自己、团队或技术支持排查。

较新的 TWS / IB Gateway 会把本地日志加密保存,所以直接打开日志目录里的 .ibgzenc 文件通常看不懂。要阅读日志内容,应从客户端菜单里导出。

适合导出日志的情况:

  • 你想自己查看 API 请求和回调顺序。
  • 你要把日志片段和 Python / Java / C# 程序输出对照。
  • 你需要发给团队成员排查,但不想直接发送整个日志目录。
  • IBKR 支持要求你提供本地导出的明文日志。
  • 问题发生后准备清理旧日志,删除前先保存证据。

如果问题还没有复现,先不要急着导出。先开启 API message log 和合适的日志级别,复现问题,再导出当天日志,这样文件里才有关键内容。

TWS 的官方入口通常是:

  1. 打开并登录 TWS。
  2. 进入顶部菜单 Help
  3. 选择 Troubleshooting
  4. 进入 Diagnostics
  5. 根据问题类型选择 API LogsTWS Logs
  6. 点击 Export Today Logs...
  7. 选择保存目录,导出明文日志文件。

如果你排查的是代码和 Socket 通信,优先导出 API Logs。如果问题是 TWS 登录、平台卡住、界面异常、数据农场连接、整体网络状态,通常还需要导出 TWS Logs

IB Gateway 的界面更简化。官方说明中,API LogsGateway Logs 通常可以直接从 File 菜单访问:

  1. 打开并登录 IB Gateway。
  2. 进入 File 菜单。
  3. 选择 API LogsGateway Logs
  4. 点击 Export Today Logs...
  5. 选择保存目录。

服务器上运行 IB Gateway 时,要确保桌面会话有权限弹出保存窗口。如果是远程桌面、VNC、云服务器图形环境,保存目录建议选一个你能明确找到的位置。

不同日志适合不同问题,不要一上来全部导出:

日志类型适合排查
API LogsAPI 请求、回调、错误码、clientIdreqIdorderId
TWS LogsTWS 登录、界面、行情农场、连接状态、平台异常
Gateway LogsIB Gateway 登录、连接、服务端运行、平台级异常

新手排查 API 问题时,可以先导出 API Logs。如果 API 日志里只能看到请求发出,但没有进一步线索,再补充 TWS / Gateway 日志。

导出前建议确认:

  • 问题已经在当天复现。
  • 你知道问题发生的大概时间。
  • API message log 已经在问题发生前开启。
  • 日志等级已按排查需要设置。
  • 你的 API 程序使用了固定 clientId
  • 保存目录不是项目源码目录,也不是会被自动同步到公开仓库的位置。

如果问题发生在前一天,Export Today Logs... 可能导不出那一段。此时不要删除旧日志,先回到上传日志或日志目录章节,确认是否还保留了前一天日志,再按支持人员建议处理。

导出后建议自己改成容易识别的文件名,例如:

2026-06-13_tws_api_client-910_historical-data-error.log
2026-06-13_ibgateway_api_client-910_order-reject.log

文件名里可以保留日期、客户端类型、clientId 和问题类型。不要把完整账号、用户名、真实姓名、策略名或敏感订单信息写进文件名。

导出的日志可能包含:

  • 账号相关标识。
  • 合约、交易所、行情请求。
  • 订单编号、订单状态和错误信息。
  • 本地路径、客户端版本和连接信息。
  • 你程序发送的部分请求参数。

因此导出日志只应发给可信对象。公开提问、写博客、发社群或提交给非官方第三方时,应先删去账号、订单号、资产、私有路径和策略细节。

.ibgzenc 是本地加密日志,不适合直接阅读。应该在 TWS / IB Gateway 中通过日志菜单导出,导出后才会得到可阅读的明文文件。

为什么导出的日志里没有 API 请求

Section titled “为什么导出的日志里没有 API 请求”

常见原因是没有在问题发生前启用 API message log,或者导出的不是 API Logs。也可能是你看的 clientId 不对,或者问题发生时程序并没有真正连接成功。

如果问题发生在当天,通常先导出当天日志即可。如果问题发生在前几天,要确认旧日志仍然存在,并按支持人员要求选择包含历史日志的上传或导出方式。

不能。排查 API 问题时,导出日志、程序控制台输出、错误回调、请求参数和 TWS 界面状态应该互相印证。日志能说明底层通信,但不一定能直接解释你的业务代码为什么这样处理。