
开源日志查看器 hl 旨在高效处理 JSON 或 logfmt 格式的结构化日志。它使用 Rust 语言构建,提供快速索引和解析功能,能够快速扫描非常大的日志文件,无论是未压缩的还是压缩的。
根据 hl 创建者发布的基准测试,该查看器在初始扫描时自动索引的吞吐量可达约 2 GiB/s,而在重新索引增长后的文件时可达约 10 GiB/s。与 hlogf、humanlog、fblog 和 fblog-d 等替代品相比,其性能似乎有显著的提升。对于需要在命令行上处理大型日志文件的工程师来说, hl 成了一个有力的工具。
创建者表示,hl 在处理“总计数百 GB 的数百个本地文件”时表现也很出色。
hl 包括一个集成的分页器,类似于 less,可以轻松浏览日志条目。它还提供了一套丰富的功能,用于过滤、搜索、排序和格式化日志。你可以按日志级别(如 error、warn、info 等)过滤,按字段或键值对(如 component=tsdb 或 request.method?!=GET 等)过滤,或者使用时间范围(如 --since 昨天、--since -3h、--until 'Jun 19 11:22:33' 等)过滤。
hl 还提供了其他有用的功能,包括:类似于 tail -f 的跟随模式,可以使用 -F 选项自动基于时间戳对多个源进行排序;可定制化的输出,可以使用 -h 选项简单控制隐藏或显示特定字段;自动时区切换,将时间戳转换为所需的时区;支持 UI 主题和配色方案。
hl 的强大之处在于能够使用逻辑运算符、比较运算符、集合运算符和字符串运算符组合基本过滤选项,构建复杂查询。例如,以下命令结合了日志级别和两个字段过滤器:
hl 查询还允许你明确表达如何处理缺失字段。举例来说,hl my-service.log -q 'exists(.price)' 匹配定义了价格的日志条目(无论值是什么),排除那些缺失价格的条目。或者,hl my-service.log -q '.price?=3' 返回价格要么缺失要么等于 3 的条目。
在 Hacker News 上近期关于 Grafana 配置复杂性的讨论中,用户 solatic 指出,对于仅有一个应用实例的简单场景,hl 是替代 Grafana Loki 等复杂工具的良好选择。同时,他还补充道:
如果你有多台机器,将日志发送到一个地方可能不是必要的,但会非常有帮助;从根本上说,该替代方案就是 ssh 多路复用。
hl 遵循 MIT 许可,可在 macOS、Linux 和 Windows 上运行。
原文链接:







评论