跳转到内容

如何删除日志

删除日志通常是为了解决两个问题:日志目录太大,或者你想清理旧文件后重新复现一次问题,让新日志更干净。

但在故障排查中,日志就是证据。删除前要先确认问题是否已经记录、是否已经导出或上传、是否还能重新复现。不要在还没定位问题时把唯一一份日志删掉。

适合删除日志的情况:

  • 已经导出或上传过支持人员需要的日志。
  • 问题可以稳定复现,准备清理旧日志后重新生成。
  • 日志目录占用空间过大。
  • 日志里混入了太多无关请求,影响排查。
  • 你已经确认不再需要某些旧日期日志。

不建议删除的情况:

  • 问题只出现过一次,无法确认还能复现。
  • 订单、连接、行情权限或平台异常还没排查完。
  • 支持人员已经要求提供某个时间段的日志。
  • 你不确定所在目录是不是 TWS / IB Gateway 的日志目录。

删除前建议先做这几件事:

  1. 记录问题发生时间。
  2. 导出或复制一份相关日志。
  3. 记录 TWS / IB Gateway 的错误提示或订单状态;必要时保存脱敏界面信息。
  4. 停止你的 API 程序。
  5. 退出 TWS 或 IB Gateway。
  6. 确认你准备删除的是日志文件,不是配置文件或 API 源码。

尤其是订单问题,建议至少保留当天相关日志和订单回调输出。很多下单问题需要同时看 openOrder()orderStatus()、错误码和 TWS 端提示。

常见可以清理的日志文件包括:

文件类型说明
launcher.log启动器日志
launcher.YYYYMMDD.log某一天的启动器日志
api.[clientId].[day].logAPI 消息日志
tws.YYYYMMDD.HHMMSS.ibgzenc加密 TWS 日志
audit.YYYYMMDD.HHMMSS.ibgzenc加密审计日志
导出的 .log 或压缩包你手动导出的可读日志或上传文件

如果你只是为了重新复现 API 问题,优先清理旧的 api.*.log 和旧日期日志;如果是磁盘空间问题,再按日期清理更早的日志文件。

不要把整个 Jts / IBJts 目录一口气删掉,也不要删除你不了解的配置文件。下面这些内容要谨慎处理:

文件或目录原因
tws.xml可能包含 TWS 配置
jts.ini启动配置
tws.exejars客户端程序文件
sourcesamplesTWS API 源码和示例,不是日志
用户会话目录整体里面可能同时有配置、状态和日志
Login Data 相关文件可能与登录状态或配置相关

新手最常见的误删,是把 TWS API 包目录、TWS 安装目录、用户会话目录混在一起。删除前先确认文件名和修改时间,必要时先复制到备份目录。

Windows 示例流程:

  1. 关闭你的 API 程序。
  2. 退出 TWS 或 IB Gateway。
  3. 打开日志目录,例如 C:\Jts 或其用户会话子目录。
  4. 按“修改日期”排序。
  5. 只选择旧日期的日志文件,或本次准备重新生成的 api.*.log
  6. 复制一份到备份目录。
  7. 删除原日志文件。
  8. 重新启动 TWS 或 IB Gateway。
  9. 重新连接 API 程序并复现问题。

macOS / Linux 也是同样思路:先关闭进程,再进入实际 Jts / IBJts 日志目录,按日期和文件名清理。不要在 TWS / IB Gateway 正在运行时删除它正在写入的日志。

日志文件被删除后,TWS / IB Gateway 通常会在下次启动或下次产生相应事件时重新生成。比如:

  • 启动客户端后,会重新生成启动相关日志。
  • API 程序重新连接并发送请求后,才会重新生成 API 消息日志。
  • 开启 Debug 或 Detail 后,才会记录更详细内容。

如果删除后没有新日志,先检查是否真的复现了对应动作,以及 API 日志和日志等级是否已经开启。

为了让新日志更容易读,清理后复现时尽量保持环境简单:

  • 只运行一个 API 客户端。
  • 使用固定 clientId
  • 先发送一个简单请求,例如 reqCurrentTime()
  • 再发送有问题的请求。
  • 复现完成后马上停止程序,避免日志继续增长。

这样生成的日志短、时间点清楚,也更容易和错误回调、订单状态、TWS 界面状态对上。