LogTrace / 多来源日志归并与故障排查系统 V1.0.0
把多份设备日志并成一条时间线
现场排查的第一步,通常是把几台设备、几条产线导出的日志凑到一起看。文件格式不一,时间戳写法有十几种,几台机器的时钟还对不齐;人工翻一遍既慢,事后又说不清"这一段是怎么筛出来的"。这套系统把编码嗅探、时间戳归一、多来源归并、规则筛查、证据条与报告串成一条链,筛出来的每一条都能回到原始文件的具体行,条数经得起另写一套实现复算。交接时不用重新翻文件,把报告给出去就行。
关键字、正则、数值阈值、时间窗内 N 条序列四类规则,每次筛查都另用一套实现复算真值:纯 Python 逐行读原文,不经数据库,也不用倒排索引。两边差一条就判失败,并把差异行列出来,不是只在界面上显示一个数字。
归并顺序固定:时间未知的行排在最后并单独列出,其余按时间、来源序号、行号、切片号升序排。同一批文件重跑,顺序一致。导入只读原文件,不改写、不移动被导入的日志。
同一事件在多份日志里的时间差取中位数来估偏移;事件少于 10 条或偏移超过 60 秒就不建议对齐。对齐只作用在显示层,取消勾选即回退,原始时间戳永不改写,报告里写清哪些行做过偏移。
功能
六个页签加六个命令行子命令
六个页签按现场排查的顺序排:先把日志导进来,再看时间线,然后按规则筛,筛完收证据条,最后出报告;第六张是运行记录。同一条链路另有命令行入口,批量跑与自检走命令行更方便。
| # | 页签 | 这一段给出什么 |
|---|---|---|
| 01 | 日志源与导入 | 支持 .log、.txt、.csv、.json、.jsonl、.xml、.zip、.gz 八种输入;编码嗅探、流式逐行入库、超长行切片,导入后给出各来源的行数与时间范围。 |
| 02 | 时间轴 | 12 种时间戳写法归一,没有日期的行按该文件的基准日补全,跨零点时单调递增推进一天;多来源稳定归并成一条时间线,时间未知的行单独列出,并给出时钟漂移建议。 |
| 03 | 规则与筛查 | 关键字、正则、数值阈值、时间窗内 N 条序列四类规则;每次筛查同时跑一遍独立真值复算,命中条数、差异行与判据一起显示。时间窗按同一来源滑窗,命中集合不去重,时间未知的行不参与。 |
| 04 | 证据清单 | 每条命中收成一张证据条,带来源文件、行号、原文片段与标签,可以逐条翻回原文核对;也可以只保留要写进报告的那几条。 |
| 05 | 报告 | 生成单个离线自包含的 HTML 报告,含检索条件、命中条数、口径说明与时间未知行的占比;另有 CSV 与 Word 导出。报告不依赖网络,发给别人直接能打开。 |
| 06 | 运行记录 | 每一次导入、筛查、导出与自检的结果,以及被拒绝时的原因;按条数分页。 |
命令行侧六个子命令:ingest 导入、merge 归并、find 筛查、report 报告、export 导出、selftest 自检。界面与命令行共用同一套归并与筛查实现,不是两份代码。
技术做法
这套系统用什么搭的
取向与同系列的其他几套一致:能离线就离线,能不引第三方依赖就不引。现场与产线机器常常装不了服务端,所以这一套没有服务端组件,一个目录拷走就能跑。
| 开发语言 | Python 3.12,归并、筛查与报告都用标准库实现;界面用 Vue 3 加 TypeScript 与 Vite 构建成静态资源。共 51 个源文件 19259 行(不含测试) |
|---|---|
| 界面 | 桌面窗口由 pywebview 承载;没装这个组件时退化成浏览器形态,打开本机 127.0.0.1 的本地页面,功能一样 |
| 第三方组件 | 运行期只有两个可选组件:pywebview(BSD-3)负责窗口,python-docx(MIT)负责 Word 导出,两者都延迟导入且容错。不引入需要服务端部署的日志平台 |
| 存储 | 单个 SQLite 文件 .logtrace,15 张表,触发器 0 个;全文检索用 FTS5,中文按 2-gram、英文按整词切分 |
| 导出 | HTML 报告为单文件自包含,另有 CSV 与 Word;导出与筛查都不改动库里的日志原文 |
| 打包与部署 | PyInstaller 目录版打包,带图标、不带控制台窗口;免安装,删除目录即卸载 |
| 操作系统 | Windows 10 / 11(64 位) |
| 外网 | 不需要。软件离线运行,日志只在导入时读一次,不改写原文件 |
口径说明:性能数字取自项目的开发约定附录,样本为四条来源各一个 .log、合计 100 万行 167.3 MB(每条固定 176 字节),环境为 Python 3.12.10 加 SQLite 3.49.1、12 逻辑核、15.8 GB 内存、Windows 10;归并 103.3 秒,库体积是原文件的 1.783 倍,首次筛查 336 毫秒,重复筛查中位 29.0 毫秒,命中条数与独立复算的真值差 0。用例数与源码行数由项目的 tools 采集脚本于 2026-10-15 在开发机上现场采集(用例只收集不执行;源码不含测试代码与打包产物),该项目仍在迭代,这两个数字会随后续提交增长。
功能边界
这套系统不做什么
它给的是可疑片段与出处,不是结论。写在这里的每一条,在软件说明书与开发约定里都有对应说明。
它把可疑片段按规则筛出来并标出出处,判不判、判成什么,留给在现场看日志的工程师。软件不给因果结论。
测试数据的统计推断、良率与失效分布属于集成电路测试数据分析与良率诊断系统(IC-YieldScope);这套系统只看日志文本与时间线。
试验排程、设备通道占用与样品流转属于集成电路可靠性试验过程管理系统(IC-RelLab)。
导入是只读动作:日志原文照旧躺在原目录,软件只在库里存一份索引与切片,方便回查与导出。
客户内网与产线机器往往装不了服务端,所以这套系统定位成单机工具,不做采集代理,也不做集中式存储。
百万行规模下,一次关键字筛查需要 3.4 秒;大结果集的报告还没测;六个页签还没在真实浏览器里对真后端完整走查一遍。这三条写在项目的运行记录里,不写进功能表。
运行环境
装在什么机器上
| 操作系统 | Windows 10 / 11(64 位) |
|---|---|
| 硬件建议 | 8 GB 及以上内存,目录约 40 MB;导入的日志量越大,库文件与索引占用按比例增加(实测库体积约为原文件的 1.783 倍) |
| 安装方式 | 免安装目录版,解压后双击 LogTrace-V1.0.exe 即可;删除目录即卸载。不需要预装 Python、Java 或数据库服务 |
| 外网 | 不需要;日志与报告都在本机,现场数据不出机器 |
下一步
拿一份脱敏日志试一次归并
把几台设备导出的日志给我们(可以先脱敏),我们按你的规则跑一遍,报告里能看到每条命中的出处、时间未知行的占比,以及独立复算的结果。