Skip to content

future0923/logsearch

Repository files navigation

Log Search

LogSearch是一个低内存、高性能、渐进式检索工具。

为什么选择 LogSearch?

  • 内存占用极低
  • 毫秒级检索响应
  • 功能强大

实测 3M 内存即可检索超大日志文件并做到毫秒级响应

内存

响应

它适合这些场景:

  • 开发测试环境没有条件上 elk,又不想命令检索。
  • 在多份应用日志里快速找关键字。
  • 搜索错误、链路 ID、订单号、用户 ID、类名、接口名。
  • AND / OR 组合条件缩小范围。
  • 点开命中行,直接查看前后上下文。
  • 日志持续写入时,索引自动更新。
  • 支持多种压缩格式(gz、zst、bz2、xz等)搜索
  • 支持 tail -f 实时查看日志

界面预览

首页

搜索结果:

搜索结果

点击结果后查看上下文:

上下文预览

点击放大后查看更大的上下文区域:

放大预览

tail -f 方式查看

实时

快速开始

下载最新版本

vim config.toml
./start.sh

然后打开:

http://127.0.0.1:12457

如果要让其他机器访问,把 config.toml 里的地址改成:

[server]
addr = "0.0.0.0:12457"

配置日志文件

config.toml 里配置要搜索的日志:

[server]
addr = "127.0.0.1:12457"

[index]
dir = "./data/index"

[[files]]
id = "app"
path = "/var/log/my-app/app.log"

[[files]]
id = "worker"
path = "/var/log/my-app/worker.log"

[[directories]]
id = "my-app"
path = "/var/log/my-app"
include = ["*.log", "*.gz", "*.zst", "*.bz2", "*.xz"]
exclude = []
recursive = false

说明:

  • id 是页面里显示的文件名/来源名,建议写短一点。
  • path 是真实日志路径。
  • 可以配置多个 [[files]]
  • 也可以配置 [[directories]],目录下匹配 include 的日志会自动发现并加入搜索。
  • path 必须是真实目录,不支持 ./logs/** 这类通配符;需要筛选子目录时,把通配符写到 include
  • include 可以匹配文件名,例如 *.log;也可以在 recursive = true 时匹配相对路径,例如 2026-05-*/*.log
  • exclude 可以排除相对路径,例如 **/debug.log
  • .gz.zst.bz2.xz 文件会按对应压缩格式自动解压搜索,并在页面里显示压缩类型。
  • recursive = false 表示只扫描目录第一层。
  • 如果日志按日期放在子目录里,可以设置 recursive = true,例如 /var/log/my-app/2026-05-02/error.log/var/log/my-app/2026-05-03/error.log 会分别显示为不同来源。
  • 页面里的 File 下拉框可以选择全部文件或某一个文件。

例如只搜索 2026 年 5 月的日志:

[[directories]]
id = "my-app-2026-05"
path = "/var/log/my-app"
include = ["2026-05-*/*.log"]
exclude = ["**/debug.log"]
recursive = true

怎么搜索

搜普通关键字

timeout
order_id=123
com.foo.OrderService

会匹配包含该文本的日志行。

同时包含多个词:AND

timeout AND order_id

只匹配同时包含 timeoutorder_id 的日志行。

任意一个词命中:OR

timeout OR exception

匹配包含 timeoutexception 任意一个词的日志行。

用括号组合条件

(timeout AND order_id) OR retry

匹配:

  • 同时包含 timeoutorder_id 的日志行
  • 或者包含 retry 的日志行

再比如:

error AND (timeout OR exception)

匹配包含 error,并且同时包含 timeoutexception 的日志行。

AND / OR 规则

  • 操作符必须大写:ANDOR
  • 小写 andor 会当作普通文本搜索。
  • 支持括号。
  • 没写括号时,AND 优先级高于 OR
  • 暂不支持 NOT

搜索选项

页面搜索框旁边有几个选项:

  • Ignore case:忽略大小写。
  • Whole word:整词匹配。
  • Regex:按正则表达式搜索。
  • Context:点击结果后,默认加载前后多少行。
  • File:选择全部日志文件,或只搜索某一个日志文件。

查看上下文

搜索后先只显示左侧结果列表。点击某条结果后,右侧会打开上下文预览。

在上下文预览里可以:

  • 查看命中行前后的日志。
  • 向上加载更多行。
  • 向下加载更多行。
  • 放大预览区域。

日志变化会自动更新吗

会。

服务运行时会监听配置的日志目录,并定期兜底扫描:

  • 日志文件追加内容:只索引新增行。
  • 日志文件清空或截断:自动从头重建该文件索引。
  • 日志文件删除后重新创建:自动识别并重建索引。
  • gzip 轮转文件也会被索引,例如 app.log.1.gz

开源协议

MIT

About

低内存、高性能、渐进式日志检索工具

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors