All Projects → viseztrance → Flow

viseztrance / Flow

Licence: gpl-3.0
A realtime log analyzer

Programming Languages

rust
11053 projects

Projects that are alternatives of or similar to Flow

Nnn
n³ The unorthodox terminal file manager
Stars: ✭ 13,138 (+18940.58%)
Mutual labels:  ncurses, search, tui
tailor
Tailor, the library for tailing logs under logrotate, written in go.
Stars: ✭ 35 (-49.28%)
Mutual labels:  log, tail
logtail
logtail is a log tailing utility, support tailing multiple commands output stream, transferring matching content to file/webhook(like dingtalk)
Stars: ✭ 33 (-52.17%)
Mutual labels:  log, tail
csol
A small collection of solitaire/patience games (Klondike, FreeCell, Spider, Yukon, etc.) to play in the terminal
Stars: ✭ 25 (-63.77%)
Mutual labels:  tui, ncurses
NCURSES-Programming-HOWTO-examples
CMake examples for code in http://tldp.org/HOWTO/NCURSES-Programming-HOWTO/index.html
Stars: ✭ 114 (+65.22%)
Mutual labels:  tui, ncurses
todo list rust
Simple Ncurses Todo List ☑
Stars: ✭ 19 (-72.46%)
Mutual labels:  tui, ncurses
cxxcurses
Header only ncurses wrapper
Stars: ✭ 24 (-65.22%)
Mutual labels:  tui, ncurses
Cursive
A Text User Interface library for the Rust programming language
Stars: ✭ 2,613 (+3686.96%)
Mutual labels:  tui, ncurses
TailLog
实时日志(tail log)查看监控客户端工具
Stars: ✭ 79 (+14.49%)
Mutual labels:  log, tail
croatoan
Common Lisp bindings for the ncurses terminal library.
Stars: ✭ 111 (+60.87%)
Mutual labels:  tui, ncurses
mushu
Mushu is a minimalist MPD client with a TUI and an incremental fuzzy finder for your music library
Stars: ✭ 30 (-56.52%)
Mutual labels:  tui, ncurses
git-tui
Collection of human friendly terminal interface for git.
Stars: ✭ 95 (+37.68%)
Mutual labels:  log, tui
Fui
Add CLI & form interface to your program. Docs: https://docs.rs/fui
Stars: ✭ 244 (+253.62%)
Mutual labels:  tui, ncurses
bookwyrm
ncurses utility for downloading publicly available ebooks, plugin support
Stars: ✭ 31 (-55.07%)
Mutual labels:  tui, ncurses
Cuishark
A protocol analyzer like a wireshark on CUI. cuishark is using libwireshark to analyze packets. https://cuishark.slankdev.net
Stars: ✭ 208 (+201.45%)
Mutual labels:  tui, ncurses
logs-monitor
An application like Linux tail for Windows. Using Windows FindFirstChangeNotification API to monitoring file changes.
Stars: ✭ 43 (-37.68%)
Mutual labels:  log, tail
Laravel Tail
An artisan command to tail your application logs
Stars: ✭ 587 (+750.72%)
Mutual labels:  log, tail
Mandown
man-page inspired Markdown viewer
Stars: ✭ 173 (+150.72%)
Mutual labels:  tui, ncurses
Goaccess
GoAccess is a real-time web log analyzer and interactive viewer that runs in a terminal in *nix systems or through your browser.
Stars: ✭ 14,096 (+20328.99%)
Mutual labels:  tui, ncurses
ncgrep
NCGREP, which is based on ncurses library to provide user interface, is a grep tool for searching text on target directory.
Stars: ✭ 23 (-66.67%)
Mutual labels:  tui, ncurses

Flow Build Status

Flow is a tail like tool that can group and filter out data.

Preview

Installation

Currently there are no prebuilt binaries, but with the help of people such as yourself, this will change.

Flow depends on ncurses and libreadline (6.3+).

These can be installed on ubuntu using the following command:

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

And on fedora:

sudo dnf install ncurses-devel readline-devel

Install rust

Run cargo install flow

Usage

At a minimum, you can just provide the path to the log file you're interested in:

flow path/to/log <options>

Once started, you can search through the log lines with Control + F or /.

To filter data, you'll need a config file that can be generated by running:

flow --init <directory or file name>

You can load it by:

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

If you haven't specified the -c flag, flow also tries to load a .flow config file from your current directory or home folder.

Writing your own config file

Let's have a look at a sample config:

[[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)?"

This config creates three menu filters, between which you can navigate by using the arrow keys. Only lines matching each filter's conditions are shown.

The first filter creates a menu item named "All" that matches every line from the provided log file.

The second one has an extra option named contains, that needs to have a valid regex syntax. In this example, only lines containing xyz (case insensitive) will be shown.

The last filter has two extra options named starts_with and ends_with which also need to be valid regexes. This example will yield every line between the ones matching Started POST and Completed 500, as long as in between there is at least one containing xyz.

To yield the right content, it's very important to match all starting and end lines even if we have no interest in them – for example, in our case values such as "Started GET" or "Completed 200". The named capture (?P<matching>...)? tells apart valid from invalid content.

However you can very well use starts_with without ends_with, and vice versa:

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

License

This is free software, licensed under GPLv3.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].