Clloz's Blog

Back

日志查看工作流 日志查看工作流

经过这几轮讨论,我觉得我们已经把很多工具的定位理顺了。

最大的收获其实不是学会了某个命令,而是发现:

不同类型的日志,需要不同的工作流。

你最开始想用 Quickfix、Trouble 解决的问题,本质上其实是日志结构问题,而不是查看器问题。


一、工具定位总结#

1. rg (ripgrep)#

定位:

日志过滤器
代码搜索器
text

作用:

rg '\[ROS\]' mapping-app.log
rg 'timeout'
rg 'ERROR'
rg '/database/config'
bash

特点:

✅ 超快

✅ 支持正则

✅ 递归搜索

✅ 默认高亮

❌ 不负责阅读

❌ 不负责导航


我的理解:

rg = SQL 的 WHERE
text

2. fd#

定位:

文件过滤器
text

作用:

fd log
fd mapping
fd '*.gz'
bash

特点:

find 的现代版
text

我的理解:

fd = SQL 的 FROM
text

3. fzf#

定位:

交互式筛选器
text

作用:

fd | fzf
rg error | fzf
bash

特点:

二次过滤
text

我的理解:

fzf = WHERE 之后再加一个搜索框
text

4. less#

定位:

超大文件阅读器
text

作用:

less mapping-app.log
bash

搜索:

/keyword
n
N
text

特点:

✅ 几GB日志不卡

✅ SSH环境都有

❌ 多文件分析不方便

❌ 时间线分析不方便


适合:

Linux系统日志
Nginx日志
服务日志
text

5. Nvim#

定位:

分析平台
text

不是编辑器。


作用:

nvim mapping-app.log
bash

或者:

nvim ros.log api.log timeline.log
bash

特点:

✅ 多buffer

✅ 多window

✅ tmux配合

✅ 搜索

✅ 高亮


我的理解:

Nvim = 日志分析工作台
text

二、Quickfix#

定位:

导航器
text

不是日志查看器。


内部数据:

{
  ;(filename, line, column, text)
}
ts

来源:

Telescope
rg
grep
make
eslint
tsc
pytest
text

查看:

:copen
vim

跳转:

:cnext
:cprev
vim

适合:

发现30个异常
逐个检查
text

不适合:

阅读日志
分析时间线
text

三、Trouble#

定位:

Quickfix高级UI
text

本质:

Quickfix
+
漂亮界面
text

适合:

代码错误
LSP诊断
搜索结果浏览
text

不适合:

日志分析
text

对于你:

可学
但优先级不高
text

四、Telescope#

定位:

搜索器
text

作用:

leader /
text

特点:

实时搜索
模糊匹配
预览
text

Ctrl-q:

保存结果到Quickfix
text

五、lnav#

定位:

日志数据库
text

适合:

Apache
Nginx
Systemd
text

不适合:

krlog
自定义日志
text

六、你的 krlog 场景#

这是最重要的。


原始:

Android日志
+
WebLog
+
系统日志
+
JSON分段
+
乱序
text

问题:

日志本身不可读
text

所以:

先格式化
再分析
text

推荐工作流(krlog)#

第一步#

下载日志

krlog/
text

第二步#

提取

python krlog_extract.py krlog/
bash

生成:

mapping-app.log
text

作用:

去Android噪音

还原分段日志

按id合并

按时间排序
text

第三步#

专题日志

ROS:

rg '\[ROS\]' mapping-app.log > ros.log
bash

API:

rg '\[API\]' mapping-app.log > api.log
bash

时间点:

rg '15:24:' mapping-app.log > timeline.log
bash

异常:

rg 'error|timeout|success\\":false' mapping-app.log > error.log
bash

第四步#

tmux

┌─────────────┬─────────────┐
│ ros.log     │ api.log     │
├─────────────┼─────────────┤
│ timeline    │ error.log   │
└─────────────┴─────────────┘
text

打开:

nvim ros.log api.log timeline.log error.log
bash

这才是我觉得最适合你的。


七、普通 Linux 日志#

例如:

journalctl
syslog
auth.log
kern.log
text

推荐:

journalctl -xe
journalctl -u nginx
bash

过滤:

journalctl -u nginx | rg error
bash

查看:

journalctl -u nginx | less -R
bash

工作流:

journalctl

rg

less
text

八、Nginx 日志#

例如:

access.log
error.log
text

查看:

less access.log
bash

搜索:

rg '500'
bash

统计:

rg '500' access.log | wc -l
bash

实时:

tail -f access.log
bash

工作流:

tail -f

rg

less
text

九、后台服务日志#

例如:

SpringBoot
Go
Node
Python
text

如果格式规范:

时间
级别
模块
消息
text

直接:

rg ERROR app.log
rg timeout app.log
bash

然后:

less -R
bash

或者:

nvim app.log
bash

最终推荐#

按照优先级:

krlog(你的主战场)#

krlog_extract.py

mapping-app.log

rg

专题日志

tmux + nvim
text

⭐⭐⭐⭐⭐


普通 Linux/Nginx#

journalctl
tail -f

rg

less
text

⭐⭐⭐⭐⭐


Quickfix/Trouble#

发现大量异常

保存搜索结果

逐个跳转检查
text

⭐⭐⭐


所以如果让我给你未来半年投入时间的顺序:

1. krlog_extract.py ⭐⭐⭐⭐⭐

2. rg ⭐⭐⭐⭐⭐

3. tmux + nvim 多窗口 ⭐⭐⭐⭐⭐

4. Telescope ⭐⭐⭐⭐

5. less ⭐⭐⭐⭐

6. Quickfix ⭐⭐⭐

7. Trouble ⭐⭐
text

对于你的机器人建图日志场景,真正能提升排查效率的,不是 Trouble,而是:

规范化日志
+
专题日志
+
多窗口时间线对照
text

这已经非常接近很多资深后端、SRE 最终形成的工作流了。

日志查看工作流
https://clloz.com/blog/log-view
Author Clloz
Published at May 30, 2026
Comment seems to stuck. Try to refresh?✨