作品索引

logstream — 终端日志追踪工具

GoCobraLip Gloss
logstream — 终端日志追踪工具

排查线上问题时经常要同时看好几个服务的日志,tail -f 开一排窗口又乱又难对照时间。logstream 把多个来源合并成一条按时间排序的统一时间线。

功能

  • 多源合并:本地文件、stdin、SSH 远端文件可以同时跟随。
  • 正则过滤与高亮--match 过滤想看的行,--highlight 给关键词上色,互不影响。
  • 来源着色:每个日志源分配固定颜色,扫一眼就知道是哪台机器。

实现

核心是一个最小堆做 k 路归并,每个源一行一行进堆,按时间戳弹出。终端 UI 用 Lip Gloss 处理颜色与宽度截断,Cobra 管命令行参数。

bash
logstream follow app.log worker.log --match 'ERROR' --highlight 'timeout'

踩坑记录

goroutine 泄漏是最初版本的最大问题:关闭日志源时没有停掉读取协程。后来用 context.Context 统一生命周期,配合 goleak 在测试里兜底。