ripgrab

A Rust log tailer that applies ripgrep-style regex filters and structured field extraction across multiple files.

Files

namesizelast change
.editorconfig413 B
.github/FUNDING.yml208 B
.github/ISSUE_TEMPLATE/bug.md662 B
.github/pull_request_template.md706 B
.github/workflows/ci.yml1.7 KB
.github/workflows/release.yml1.1 KB
.rustfmt.toml0.2 KB
benches/end_to_end_bench.rs1.5 KB
benches/filter_bench.rs1.7 KB
benches/fixtures.rs1.3 KB
benches/render_bench.rs1.4 KB
Cargo.toml0.7 KB
CHANGELOG.md2.7 KB
CONTRIBUTING.md3.2 KB
Dockerfile0.7 KB
docs/architecture.md10.2 KB
docs/filter-dsl.md7.8 KB
docs/performance.md6.9 KB
LICENSE11.1 KB
README.md3.1 KB
SECURITY.md1.3 KB
src/cli/args_test.rs1.7 KB
src/cli/args.rs2.8 KB
src/cli/command/bench.rs1.7 KB
src/cli/command/grep.rs1.6 KB
src/cli/command/json.rs1.7 KB
src/cli/command/tail.rs2.3 KB
src/cli/mod.rs1.0 KB
src/cli/shell_completion.rs1.1 KB
src/filter.rs4.9 KB
src/filter/dsl/ast/display.rs1.8 KB
src/filter/dsl/ast/mod.rs1.5 KB
src/filter/dsl/compile.rs3.4 KB
src/filter/dsl/error_test.rs1.1 KB
src/filter/dsl/error.rs1.3 KB
src/filter/dsl/eval/context.rs1.7 KB
src/filter/dsl/eval/eval_test.rs2.1 KB
src/filter/dsl/eval/eval.rs2.9 KB
src/filter/dsl/eval/mod.rs0.6 KB
src/filter/dsl/mod.rs1.4 KB
src/filter/dsl/parser/grammar_test.rs2.0 KB
src/filter/dsl/parser/grammar.rs4.2 KB
src/filter/dsl/parser/lexer_test.rs2.2 KB
src/filter/dsl/parser/lexer.rs4.8 KB
src/filter/dsl/parser/mod.rs1.1 KB
src/lib.rs0.9 KB
src/main.rs3.3 KB
src/render.rs3.0 KB
src/render/ansi/hash/source_color_test.rs1.2 KB
src/render/ansi/hash/source_color.rs1.4 KB
src/render/ansi/sgr/palette.rs1.3 KB
src/render/ansi/sgr/writer.rs1.9 KB
src/render/mod.rs0.7 KB
src/render/mode/json_test.rs1.4 KB
src/render/mode/json.rs1.8 KB
src/render/mode/stream_test.rs1.3 KB
src/render/mode/stream.rs2.2 KB
src/render/mode/table_test.rs1.5 KB
src/render/mode/table.rs3.1 KB
src/render/width/unicode.rs1.4 KB
src/source/file/mod.rs2.4 KB
src/source/file/rotation_test.rs1.5 KB
src/source/file/rotation.rs2.6 KB
src/source/file/seek_test.rs1.8 KB
src/source/file/seek.rs2.5 KB
src/source/mod.rs1.2 KB
src/source/multi/merger_test.rs1.3 KB
src/source/multi/merger.rs2.8 KB
src/source/multi/mod.rs1.3 KB
src/source/stdin.rs1.3 KB
src/tail.rs4.2 KB
src/tail/backpressure_test.rs1.6 KB
src/tail/backpressure.rs2.2 KB
src/tail/engine/inotify.rs2.1 KB
src/tail/engine/kqueue.rs1.7 KB
src/tail/engine/mod.rs1.7 KB
src/tail/engine/poll_test.rs1.7 KB
src/tail/engine/poll.rs2.2 KB
tests/cli_grep.rs1.7 KB
tests/cli_json.rs1.5 KB
tests/cli_tail.rs2.3 KB
tests/cli.rs2.4 KB
tests/filter_dsl.rs1.7 KB
tests/fixtures/expected/basic-output.txt2.1 KB
tests/fixtures/filters/basic.txt0.4 KB
tests/fixtures/logs/access.log12.4 KB
tests/fixtures/logs/app-json.log4.6 KB
tests/fixtures/logs/syslog.log3.0 KB
tests/rotation.rs2.4 KB

README

ripgrab grew out of late nights tailing five log files at once in different tmux panes. It watches a list of paths, applies compiled regex filters, optionally extracts named fields, and prints results with color. If you know rg, you’ll feel at home.

Recent commits

  • e2b9a41 render: honor NO_COLOR env var
  • c17d3f0 tail: switch fallback poller to 200ms cadence
  • 9b4aa82 filter: compile regex set once per session
  • 4d1ee15 cli: add --since for time-bounded tailing
  • 77c2a8b render: truncate long fields to terminal width
  • 1a0f562 tail: handle truncation / rotation on inode change
  • bf21c40 filter: structured extraction via named capture groups
  • 58a63d1 bump dependencies and pin MSRV to 1.76
  • 2ec7091 add integration tests using assert_cmd
  • a903724 initial public release