18个稳定版本

3.0.2 2024年8月17日
3.0.1 2024年4月1日
3.0.0 2024年1月21日
2.4.0 2024年1月11日
1.3.0 2023年7月31日

#8 in 文本编辑器

Download history 30/week @ 2024-05-03 26/week @ 2024-05-10 49/week @ 2024-05-17 55/week @ 2024-05-24 63/week @ 2024-05-31 62/week @ 2024-06-07 99/week @ 2024-06-14 53/week @ 2024-06-21 26/week @ 2024-06-28 116/week @ 2024-07-05 69/week @ 2024-07-12 64/week @ 2024-07-19 60/week @ 2024-07-26 41/week @ 2024-08-02 40/week @ 2024-08-09 242/week @ 2024-08-16

394次每月下载

MIT 许可证

4MB
3K SLoC

日志文件高亮器

功能

  • 🪵 查看任何格式日志文件(或 tail
  • 🍰 无需设置或配置
  • 🌈 高亮数字、日期、IP地址、UUID、URL等
  • ⚙️ 所有高亮组均可自定义
  • 🧬 容易与其他命令集成
  • 🔍 在底层使用 less 进行回滚、搜索和过滤

目录


概述

tailspin 通过逐行读取日志文件,对每一行运行一系列正则表达式来工作。正则表达式识别您在日志文件中期望找到的模式,如日期、数字、严重性关键字等。

tailspin 对要高亮的项的格式或位置不做出任何假设。因此,它不需要配置,并且高亮效果将在不同的日志文件中保持一致。

使用方法

tailspin 的二进制名称为 tspin

# Read from file and view in `less`
tspin application.log

# Read from file and print to stdout
tspin application.log --print

# Read from stdin and print to stdout
echo "2021-01-01 12:00:00 [INFO] This is a log message" | tspin 

# Read from another command and print to 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] # e.g. "Jan 01", "Mon Feb 28"
day = { fg = "magenta" }
month = { fg = "magenta" }
number = { fg = "magenta" }

[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" }

stdinstdout 一起工作

默认情况下,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-like 编辑器的用户来说很熟悉。以下是大多数有用的导航命令的简要概述

  • j/k:向上/向下滚动一行
  • d/u:向上/向下滚动半页
  • g/G:转到文件顶部/底部

跟随模式

当您使用 -f--follow 标志运行 tailspin 时,它将滚动到文件底部,并随着新行被添加到文件中而将新行打印到屏幕上。

要停止跟踪文件,使用 Ctrl + C 中断。这将停止跟踪,但保持文件打开状态,允许您查看现有内容。

要从 less 内部恢复跟踪文件,请按 Shift + F

使用 / 后跟您的搜索查询。例如,/ERROR 查找 ERROR 的第一个出现。

搜索后,n 查找下一个实例,而 N 查找上一个实例。

过滤

less 允许通过关键字过滤行,使用 & 后跟模式。例如,&ERROR 仅显示包含 ERROR 的行。

要仅显示包含 ERRORWARN 的行,请使用正则表达式:&\(ERROR\|WARN\)

要清除过滤器,请使用不带模式的 &

设置

-f, --follow                     Follow the contents of the file
-e, --start-at-end               Start at the end of the file
-p, --print                      Print the output to stdout
-c, --listen-command [CMD]       Listen the output (stdout) of the provided command
    --config-path [PATH]         Use the configuration file from the provided path
    --words-[COLOR] [WORDS]      Highlight the provided words with the given color
    --disable-builtin-keywords   Disable the highlighting of all builtin groups
    --disable-booleans           Disable the highlighting of booleans and nulls
    --disable-severity           Disable the highlighting of severity levels
    --disable-rest               Disable the highlighting of REST verbs

依赖项

~15–29MB
~431K SLoC