日志对比:按时间戳对齐并差异比较多个日志文件

并排打开多个日志文件,按时间戳同步滚动,并筛选出重要的日志行。

用于调试分布式系统的全屏日志查看器:放入来自不同服务的日志,即可查看各处在同一时刻发生了什么。

日志对比:按时间戳对齐并差异比较多个日志文件
并排打开多个日志文件,按时间戳同步滚动,并筛选出重要的日志行。

查看器作为独立的全屏应用运行,让每一个像素都服务于你的日志。

打开日志对比(全屏)

文件完全在浏览器中解析,不会上传任何内容。

  • 按时间戳对齐滚动:所有打开的日志都会一起移动到同一时刻。
  • 多个文件并排显示——将客户端日志、服务器日志和代理日志相互比较。
  • 按文件设置关键词和正则过滤器,将噪音缩减为相关的日志行。
  • 高亮和固定日志行,在梳理时间线时标记证据。
  • 在浏览器中本地解析以处理大文件——无需上传,也没有服务器大小配额。
  • 免费且开源(github.com/lubobill1990/log-compare)。

为什么要按时间戳对齐比较日志

当一个请求涉及三个服务并出现问题时,真相分散在三个日志文件中。逐个阅读会迫使你在脑中记住时间戳,在编辑器之间跳转,并且每次都会失去线索。Log Compare 采用相反的方法:一次打开所有相关文件,查看器会将它们对齐到同一条时间线,因此滚动一个日志时,其他日志也会滚动到同一瞬间。 核心交互是时间戳锁定滚动。每个文件都在浏览器中解析,并为每一行的时间戳建立索引。当你浏览主日志时,其他窗格会跟随到该时刻或此前最接近的行——这正是工程师用两台显示器和大量耐心手动完成的技术,如今可自动完成。机器之间的时钟偏差会保持可见而不会被隐藏,这本身就具有诊断价值:如果数据库日志显示事件发生在触发它的请求之前,你就会了解到 NTP 配置的重要信息。 过滤器让大规模对齐变得实用。一个冗长的服务每秒可输出数千行;每个文件的关键词或正则表达式过滤器可将每个窗格缩减为你关心的行——错误代码、请求 ID、用户 ID——而对齐仍基于完整时间线。跨所有窗格结合请求 ID 过滤器,就能把分布式追踪变成可从头读到尾的内容。 一切都在本地完成。文件通过浏览器的 File API 读取,绝不会离开你的机器;当日志包含客户数据、令牌或不能粘贴到陌生在线工具中的内部主机名时,这一点尤为重要。这也意味着实际大小限制取决于 RAM,而不是上传上限。 典型用途包括:在事后复盘中从五个服务还原混乱的一分钟;将故障环境的日志与正常环境比较以找出行为分歧之处;跨客户端、网关和后端跟踪一个请求 ID;以及验证修复是否改变了事件顺序,而不只是错误消息。查看器是开源的,因此可扩展解析规则以支持自定义时间戳格式。

日志对比使用示例

工程师在实践中使用时间戳对齐日志的方式。

场景日志对比如何帮助结果
网关和后端之间的 API 请求间歇性失败打开两份日志,按请求 ID 过滤,然后滚动到网关错误后端窗格已处于同一时刻:40 ms 前发生了连接池超时。
针对 4 个服务、持续 3 分钟的中断进行事后复盘打开全部四份日志,同步逐步查看中断时间窗口各服务的事件顺序一目了然,包括哪个告警是原因,哪个是结果。
预发布环境正常,生产环境失败并排打开各环境中同一操作的日志窗格会在生产环境走向不同代码路径的准确行处分叉。
怀疑主机之间存在时钟偏差对齐到一个已知的共享事件(部署标记、cron 触发)偏差显示为窗格之间的固定偏移——在相信任何时间线前先量化它。

如何使用日志对比

  1. 点击“打开日志对比”——查看器将在全屏页面中打开。
  2. 拖放两个或更多日志文件(或使用文件选择器);每个文件将在自己的窗格中打开。
  3. 滚动任意窗格:其他窗格会自动跟随到相同时间戳。
  4. 为每个窗格添加关键词或正则过滤器以减少噪音——对齐仍会跟踪完整时间线。
  5. 在还原事件顺序时,高亮或固定关键日志行。

日志对比常见问题

我的日志文件会上传到任何地方吗?
不会。文件通过浏览器的 File API 打开,并在 JavaScript 中本地解析。不会传输任何内容,因此该工具可安全处理包含客户数据或必须留在机器上的机密信息的日志。
可识别哪些时间戳格式?
常见格式开箱即用——ISO 8601(2026-09-11T02:30:00.123Z)、syslog 风格日期,以及出现在行首附近的纪元毫秒。没有可识别时间戳的行会继承上一行的时间,因此堆栈跟踪会保持附属于其日志条目。
它能处理多大的文件?
解析在内存中进行,因此实际限制是浏览器的 RAM——桌面设备通常可处理数百兆字节。对于数 GB 的日志,请先用 grep 预过滤或按时间窗口拆分,再加载所需片段。
我能比较来自时钟不同机器的日志吗?
可以——对齐使用每个文件自己的时间戳,因此固定时钟偏差会显示为窗格间可见的偏移,而不是被悄悄校正。对齐到一个已知的共享事件以测量偏差,然后带着该偏移理解时间线。
这是开源的吗?
是。Log Compare 在 github.com/lubobill1990/log-compare 上以开源许可证开发;欢迎提交支持新时间戳格式或新功能的问题和拉取请求。
为什么它会在单独的全屏页面中打开?
日志分析需要水平空间——多个包含长行和过滤器的窗格。查看器因此在网站的常规布局之外运行,使用整个窗口。会话状态保留在该标签页中;此落地页只用于说明和启动它。