8 个版本

使用旧的 Rust 2015

0.3.5 2017年9月8日
0.3.4 2016年12月2日
0.3.3 2016年11月20日
0.2.1 2016年11月3日
0.1.0 2016年11月1日

#28#read-line

GPL-3.0 许可证

1.5MB
2.5K SLoC

Flow 构建状态

Flow 是一个类似于 tail 的工具,可以分组和过滤数据。

Preview

安装

目前还没有预构建的二进制文件,但通过像您这样的人的帮助,这将会改变。

Flow 依赖于 ncurseslibreadline (6.3+)。

这些可以在 ubuntu 上使用以下命令安装

sudo apt-get install libncurses5-dev libncursesw5-dev libreadline-dev

fedora

sudo dnf install ncurses-devel readline-devel

安装 rust

运行 cargo install flow

用法

至少,您可以只提供您感兴趣的日志文件的路径

flow path/to/log <options>

启动后,您可以使用 Control + F/ 在日志行中进行搜索。

要过滤数据,您需要一个配置文件,可以通过运行生成

flow --init <directory or file name>

您可以通过以下方式加载它

flow path/to/log -c path/to/config

如果您没有指定 -c 标志,flow 还会尝试从您的当前目录或主文件夹中加载 .flow 配置文件。

编写自己的配置文件

让我们看看一个示例配置

[[filters]]
name = "All"

[[filters]]
name = "Having xyz"
contains = "(?i)xyz"

[[filters]]
name = "Errors"
contains = "(?i)xyz"
starts_with = "Started (?P<matching>POST)?"
ends_with = "Completed (?P<matching>500)?"

这个配置创建了三个菜单过滤器,您可以通过使用箭头键在它们之间导航。只有与每个过滤器条件匹配的行才会显示。

第一个过滤器创建了一个名为 "All" 的菜单项,该菜单项匹配提供的日志文件中的每一行。

第二个有一个额外的选项名为 contains,它需要一个有效的 regex 语法。在这个例子中,只有包含 xyz (不区分大小写) 的行才会显示。

最后一个过滤器有两个额外的选项名为 starts_withends_with,它们也需要是有效的 regex。这个例子将在匹配 Started POSTCompleted 500 之间的每一行,只要在它们之间至少有一行包含 xyz

为了产生正确的内容,即使我们对此不感兴趣,也要匹配所有起始和结束行也非常重要——例如,在我们的情况下,像“开始GET”或“完成200”这样的值。命名捕获 (?P<匹配>...)? 可以区分有效内容与无效内容。

然而,您可以非常熟练地使用 starts_with 而不使用 ends_with,反之亦然

[[filters]]
name = "Post requests"
starts_with = "Started (?P<matching>POST)?"

许可

这是免费软件,许可协议为GPLv3。

依赖关系

~6MB
~115K SLoC