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
1.5MB
2.5K SLoC
Flow
Flow 是一个类似于 tail 的工具,可以分组和过滤数据。
安装
目前还没有预构建的二进制文件,但通过像您这样的人的帮助,这将会改变。
Flow 依赖于 ncurses
和 libreadline
(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_with
和 ends_with
,它们也需要是有效的 regex。这个例子将在匹配 Started POST
和 Completed 500
之间的每一行,只要在它们之间至少有一行包含 xyz
。
为了产生正确的内容,即使我们对此不感兴趣,也要匹配所有起始和结束行也非常重要——例如,在我们的情况下,像“开始GET”或“完成200”这样的值。命名捕获 (?P<匹配>...)?
可以区分有效内容与无效内容。
然而,您可以非常熟练地使用 starts_with
而不使用 ends_with
,反之亦然
[[filters]]
name = "Post requests"
starts_with = "Started (?P<matching>POST)?"
许可
这是免费软件,许可协议为GPLv3。
依赖关系
~6MB
~115K SLoC