日志文件高亮工具
特性
- 🪵 查看(或
tail
)任何格式的日志文件 - 🍰 无需设置或配置
- 🌈 高亮显示数字、日期、IP地址、UUID、URL等
- ⚙️ 所有高亮组都可自定义
- 🧬 易于与其他命令集成
- 🔍 底层使用
less
实现回滚、搜索和过滤
目录
概述
tailspin
通过逐行读取日志文件,对每行运行一系列正则表达式来工作。这些正则表达式识别您期望在日志文件中找到的模式,如日期、数字、严重性关键词等。
tailspin
不对要高亮的项目的格式或位置做任何假设。因此,它不需要配置,高亮效果可以在不同的日志文件中保持一致。
使用方法
tailspin
的二进制文件名是 tspin
。
# 从文件读取并在 `less` 中查看
tspin application.log
# 从文件读取并打印到 stdout
tspin application.log --print
# 从 stdin 读取并打印到 stdout
echo "2021-01-01 12:00:00 [INFO] 这是一条日志消息" | tspin
# 从其他命令读取并打印到 stdout
kubectl logs [pod name] --follow | tspin
安装
包管理器
# Homebrew
brew install tailspin
# Cargo
cargo install tailspin
# Archlinux
pacman -S tailspin
# Nix
nix-shell -p tailspin
# NetBSD
pkgin install tailspin
# FreeBSD
pkg install tailspin
从源码安装
cargo install --path .
二进制文件将被放置在 ~/.cargo/bin
,确保将该文件夹添加到您的 PATH
环境变量中。
[!重要] 从源码构建时,请确保您使用的是最新版本的
less
。
高亮组
日期
关键词
URL
数字
IP 地址
引号
Unix 文件路径
HTTP 方法
UUID
键值对
指针地址
Unix 进程
监视文件夹
tailspin
可以监听指定文件夹中的新行条目。监视文件夹对于监控轮换的日志文件很有用。
监视文件夹时,tailspin
将以跟随模式启动(按 Ctrl + C 中止),并且只会打印初始启动后到达的新行条目。
自定义高亮组
概述
在 ~/.config/tailspin
中创建 config.toml
文件以自定义高亮组。
样式的形式如下:
style = { fg = "color", bg = "color", italic = false, bold = false, underline = false }
要编辑不同的高亮组,请在 config.toml
文件中包含它们。例如,要编辑 date
高亮组,在 config.toml
中添加以下内容:
[date]
style = { fg = "green" }
展开下面的部分以查看高亮组的默认配置:
默认高亮组设置
[date]
number = { fg = "magenta" }
separator = { faint = true }
[date_word] # 例如 "Jan 01", "Mon Feb 28"
day = { fg = "magenta" }
month = { fg = "magenta" }
number = { fg = "magenta" }
```toml
[time]
time = { fg = "blue" }
zone = { fg = "red" }
separator = { faint = true }
[[keywords]]
words = ['null', 'true', 'false']
style = { fg = "red", italic = true }
[[keywords]]
words = ['GET']
style = { fg = "black", bg = "green" }
border = true
[url]
http = { fg = "red", faint = true }
https = { fg = "green", faint = true }
host = { fg = "blue", faint = true }
path = { fg = "blue" }
query_params_key = { fg = "magenta" }
query_params_value = { fg = "cyan" }
symbols = { fg = "red" }
[number]
style = { fg = "cyan" }
[ip]
number = { fg = "blue", italic = true }
letter = { fg = "magenta", italic = true }
separator = { fg = "red" }
[quotes]
style = { fg = "yellow" }
token = '"'
[path]
segment = { fg = "green", italic = true }
separator = { fg = "yellow" }
[uuid]
number = { fg = "blue", italic = true }
letter = { fg = "magenta", italic = true }
separator = { fg = "red" }
[pointer]
number = { fg = "blue", italic = true }
letter = { fg = "magenta", italic = true }
separator = { fg = "red" }
[key_value]
key = { faint = true }
separator = { fg = "white" }
[process]
name = { fg = "green" }
separator = { fg = "red" }
id = { fg = "yellow" }
禁用高亮组
要禁用某个高亮组,请将该组的disabled
字段设置为true:
[date]
disabled = true
通过config.toml添加关键词
要添加自定义关键词,可以将它们包含在关键词列表中或添加新条目:
[[keywords]]
words = ['MyCustomKeyword']
style = { fg = "green" }
[[keywords]]
words = ['null', 'true', 'false']
style = { fg = "red", italic = true }
从命令行添加关键词
有时从命令行添加高亮组更方便,无需编辑TOML文件。要从命令行添加高亮,请使用--words-[red|green|yellow|blue|magenta|cyan]
标志,后跟用逗号分隔的要高亮的单词列表。
自定义正则表达式高亮器
当你需要对高亮进行更精细的控制时,可以使用正则表达式高亮器。这个高亮器允许你指定一个正则表达式和一个样式,应用于匹配的文本。
它支持一个捕获组()
。当找到捕获组时,会将样式应用于捕获的文本。
[[regexps]]
regular_expression = 'Started (.*)\.'
style = { fg = "red" }
使用stdin和stdout
默认情况下,tailspin
会在分页器less
中打开文件。但是,如果你将内容管道传输给tailspin
,它会直接将高亮输出打印到stdout
。这类似于运行tspin [file] --print
。
要让tailspin
高亮不同命令的日志,你可以像这样将那些命令的输出管道传输给tailspin
:
journalctl -f | tspin
cat /var/log/syslog | tspin
kubectl logs -f pod_name | tspin
使用分页器less
概述
tailspin
使用less
作为分页器来查看高亮的日志文件。你可以通过man命令(man less
)或按h键访问帮助屏幕来获取更多关于less
的信息。
导航
在less
中导航使用一套可能对vim
或其他类vi
编辑器用户来说熟悉的键绑定。以下是最有用的导航命令简要概述:
- j/k: 向上/向下滚动一行
- d/u: 向上/向下滚动半页
- g/G: 转到文件顶部/底部
跟随模式
当你使用-f
或--follow
标志运行tailspin
时,它会滚动到底部并在文件添加新行时将其打印到屏幕上。
要停止跟随文件,请使用Ctrl + C中断。这将停止跟踪,但保持文件打开,允许你查看现有内容。
要从less
中恢复跟随文件,请按Shift + F。
搜索
使用/后跟你的搜索查询。例如,/ERROR
查找ERROR的第一次出现。
搜索后,n查找下一个实例,N查找上一个实例。
过滤
less
允许通过关键词过滤行,使用&后跟模式。例如,&ERROR
只显示包含ERROR的行。
要只显示包含ERROR
或WARN
的行,请使用正则表达式:&\(ERROR\|WARN\)
。
要清除过滤器,使用不带模式的&。
设置
-f, --follow 跟随文件内容
-e, --start-at-end 从文件末尾开始
-p, --print 将输出打印到stdout
-c, --listen-command [CMD] 监听提供的命令的输出(stdout)
--config-path [PATH] 使用提供的路径的配置文件
--words-[COLOR] [WORDS] 用给定的颜色高亮提供的单词
--disable-builtin-keywords 禁用所有内置组的高亮
--disable-booleans 禁用布尔值和空值的高亮
--disable-severity 禁用严重级别的高亮
--disable-rest 禁用REST动词的高亮